Passing arguments to & executing, a python script on a remote machinefrom a python script on local m

Discussion in 'Python' started by ashish, Sep 19, 2012.

  1. ashish

    ashish Guest

    Hi c.l.p folks

    Here is my situation

    1. I have two machines. Lets call them 'local' & 'remote'.
    Both run ubuntu & both have python installed

    2. I have a python script, local.py, running on 'local' which needs to passarguments ( 3/4 string arguments, containing whitespaces like spaces, etc ) to a python script, remote.py running on 'remote' (the remote machine).

    I have the following questions:

    1. What's the best way to accomplish my task ?
    I have researched quite a bit & pretty much everybody is using ssh.
    After googling a bunch, most people are using very complex workarounds to do this sort of thing.

    I googled & found people using several libraries to accomplish ssh to remote machine & execute a command on remote machine.
    paramiko ( now forked into the ssh moduke), fabric, pushy ,etc

    People who have used any of these libraries, which one would you recommend,as the most apt (simple & easy to use, lightweight, best performance, etc)for my situation ?

    2. I would prefer a solution, which does NOT require the installation of extra libraries on the local & remote machines.
    If installing external librar

    3. Has anybody been able to do this using os.system ?

    I tried this
    >>> import os
    >>> os.system ("ssh remoteuser@remote python remote.py arg1 arg2 arg3")


    This worked, but if the arguments i tried to pass, had spaces, i was not able to 'escape' the spaces.

    Any & all explanations/links/code snippets/thoughts/ideas/suggestions/feedback/comments/ of the Python tutor community would be greatly appreciated.

    Thanks a ton

    cheers
    ashish

    email :
    ashish.makani
    domain:gmail.com

    “The only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it.” - Steve Jobs (1955 - 2011)
    ashish, Sep 19, 2012
    #1
    1. Advertising

  2. Re: Passing arguments to & executing, a python script on a remotemachine from a python script on local machine (using ssh ?)

    2012/9/19 ashish <>:
    > Hi c.l.p folks
    >
    > Here is my situation
    >
    > 1. I have two machines. Lets call them 'local' & 'remote'.
    > Both run ubuntu & both have python installed
    >
    > 2. I have a python script, local.py, running on 'local' which needs to pass arguments ( 3/4 string arguments, containing whitespaces like spaces, etc ) to a python script, remote.py running on 'remote' (the remote machine).
    >
    > I have the following questions:
    >
    > 1. What's the best way to accomplish my task ?
    > I have researched quite a bit & pretty much everybody is using ssh.
    > After googling a bunch, most people are using very complex workarounds todo this sort of thing.
    >
    > I googled & found people using several libraries to accomplish ssh to remote machine & execute a command on remote machine.
    > paramiko ( now forked into the ssh moduke), fabric, pushy ,etc
    >
    > People who have used any of these libraries, which one would you recommend, as the most apt (simple & easy to use, lightweight, best performance, etc) for my situation ?
    >
    > 2. I would prefer a solution, which does NOT require the installation of extra libraries on the local & remote machines.
    > If installing external librar
    >
    > 3. Has anybody been able to do this using os.system ?
    >
    > I tried this
    >>>> import os
    >>>> os.system ("ssh remoteuser@remote python remote.py arg1 arg2 arg3")

    >
    > This worked, but if the arguments i tried to pass, had spaces, i was not able to 'escape' the spaces.


    How about something like this:
    os.system ( 'ssh remoteuser@remote python remote.py "arg 1" "arg 2" "arg 3"' )

    Cheers
    Ismael


    >
    > Any & all explanations/links/code snippets/thoughts/ideas/suggestions/feedback/comments/ of the Python tutor community would be greatly appreciated.
    >
    > Thanks a ton
    >
    > cheers
    > ashish
    >
    > email :
    > ashish.makani
    > domain:gmail.com
    >
    > “The only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it.†- Steve Jobs (1955 - 2011)
    > --
    > http://mail.python.org/mailman/listinfo/python-list




    --
    Do not let me induce you to satisfy my curiosity, from an expectation,
    that I shall gratify yours. What I may judge proper to conceal, does
    not concern myself alone.
    Ismael Farfán, Sep 19, 2012
    #2
    1. Advertising

  3. Re: Passing arguments to & executing, a python script on a remotemachine from a python script on local machine (using ssh ?)

    On 9/19/2012 12:50 PM ashish said...
    > Hi c.l.p folks
    >
    > Here is my situation
    >
    > 1. I have two machines. Lets call them 'local' & 'remote'.
    > Both run ubuntu & both have python installed
    >
    > 2. I have a python script, local.py, running on 'local' which needs to pass arguments ( 3/4 string arguments, containing whitespaces like spaces, etc ) to a python script, remote.py running on 'remote' (the remote machine).
    >
    > I have the following questions:
    >
    > 1. What's the best way to accomplish my task ?


    Check out http://rpyc.sourceforge.net/ -- It's reasonably lightweight
    and has been working well for our similar situation.

    Emile
    Emile van Sebille, Sep 20, 2012
    #3
  4. ashish

    Chris Rebert Guest

    Re: Passing arguments to & executing, a python script on a remotemachine from a python script on local machine (using ssh ?)

    On Wed, Sep 19, 2012 at 12:50 PM, ashish <> wrote:
    <snip>
    > 2. I have a python script, local.py, running on 'local' which needs to pass arguments ( 3/4 string arguments, containing whitespaces like spaces, etc ) to a python script, remote.py running on 'remote' (the remote machine).

    <snip>
    > 3. Has anybody been able to do this using os.system ?
    >
    > I tried this
    >>>> import os
    >>>> os.system ("ssh remoteuser@remote python remote.py arg1 arg2 arg3")

    >
    > This worked, but if the arguments i tried to pass, had spaces, i was not able to 'escape' the spaces.


    Use the `subprocess` module instead (with shell=False). You then won't
    need to worry about escaping.
    http://docs.python.org/library/subprocess.html

    Cheers,
    Chris
    Chris Rebert, Sep 20, 2012
    #4
  5. Re: Passing arguments to & executing, a python script on a remote machine from a python script on local machine (using ssh ?)

    Ismael Farfán <> writes:

    > How about something like this:
    > os.system ( 'ssh remoteuser@remote python remote.py "arg 1" "arg 2" "arg 3"' )


    That won't work. You need an additional level of quoting because ssh is
    also a shell so it adds another level of interpretation.

    The following works:

    os.system('''ssh remoteuser@remote "python remote.py 'arg 1' 'arg 2' 'arg 3'"''')
    --
    Piet van Oostrum <>
    WWW: http://pietvanoostrum.com/
    PGP key: [8DAE142BE17999C4]
    Piet van Oostrum, Sep 20, 2012
    #5
  6. Re: Passing arguments to & executing, a python script on a remote machine from a python script on local machine (using ssh ?)

    Chris Rebert <> writes:

    > Use the `subprocess` module instead (with shell=False). You then won't
    > need to worry about escaping.
    > http://docs.python.org/library/subprocess.html


    You will still need to worry about escaping because on the remote end
    you invoke ssh which is a shell. The obvious call:

    subprocess.call(["ssh", "remoteuser@remote", "python", "remote.py", "arg
    1", "arg 2", "arg 3"])

    won't work because ssh will break up the "arg n" strings. You need to
    use "'arg n'" or put the whole python command in a string like:

    "python TEST/testargs.py 'arg 1' 'arg 2' 'arg 3'"
    --
    Piet van Oostrum <>
    WWW: http://pietvanoostrum.com/
    PGP key: [8DAE142BE17999C4]
    Piet van Oostrum, Sep 20, 2012
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    3
    Views:
    1,039
    James Stroud
    Dec 13, 2005
  2. gaurav kashyap
    Replies:
    2
    Views:
    273
    gaurav kashyap
    Oct 16, 2008
  3. doni
    Replies:
    3
    Views:
    137
    Josef Moellers
    Dec 10, 2007
  4. oldyork90
    Replies:
    10
    Views:
    336
    Jorge
    Sep 27, 2008
  5. ashish
    Replies:
    4
    Views:
    286
    ashish
    Sep 20, 2012
Loading...

Share This Page