T
Tim Arnold
Hi, I'm writing a script to capture a command on the commandline and run it
on a remote server.
I guess I don't understand subprocess because the code below exec's the
user's .cshrc file even though by default shell=False in the Popen call.
Here's the code. I put a line in my .cshrc file: echo 'testing' which
appears when I run this script on the remote host.
------------------------
import os,sys,subprocess,shlex
def main():
if action:
action.insert(0,'rsh my_remotehost')
p = subprocess.Popen(shlex.split(' '.join(action)))
p.wait()
if __name__ == '__main__':
action = sys.argv[1:] or list()
main()
------------------------
Since the shell is executing in the child process anyway, is the only
difference when using shell=True is that environment variables can be
expanded in the command to be executed?
thanks,
--Tim Arnold
on a remote server.
I guess I don't understand subprocess because the code below exec's the
user's .cshrc file even though by default shell=False in the Popen call.
Here's the code. I put a line in my .cshrc file: echo 'testing' which
appears when I run this script on the remote host.
------------------------
import os,sys,subprocess,shlex
def main():
if action:
action.insert(0,'rsh my_remotehost')
p = subprocess.Popen(shlex.split(' '.join(action)))
p.wait()
if __name__ == '__main__':
action = sys.argv[1:] or list()
main()
------------------------
Since the shell is executing in the child process anyway, is the only
difference when using shell=True is that environment variables can be
expanded in the command to be executed?
thanks,
--Tim Arnold