您的位置:首页 > 编程语言 > Python开发

python ssh 运行带后面&的程序

2012-11-19 11:28 573 查看
相信这个问题很多人都遇到过
从A机器执行remote shell 运行B机器上 python *** &
在B机器本机执行 python *** & 是需要再按一次回车的
这个时候,如果从A 远程执行shell命令,那么会一直被阻塞住,所以需要模拟一个回车的信号.
但是我折腾了半天也没有搞定怎么在命令的最后加一个回车.
最后找到一个办法,用subprocess去执行.\ (采用新起子进程的方式去执行这个shell,并且通过管道来获取该子进程的标准输入输出和err)

subprocess.Popen("python2.7 /home/qa/projects/RDS_PROXY/perf-test/agent/node.py -t %s --filename=%s --module=%s &"%(taskid,filename,module),     shell =True, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)


函数说明:

Using the subprocess module

===========================

This module defines one class called Popen:

class Popen(args, bufsize=0, executable=None,

stdin=None, stdout=None, stderr=None,

preexec_fn=None, close_fds=False, shell=False,

cwd=None, env=None, universal_newlines=False,

startupinfo=None, creationflags=0):

Arguments are:

args should be a string, or a sequence of program arguments. The

program to execute is normally the first item in the args sequence or

string, but can be explicitly set by using the executable argument.

On UNIX, with shell=False (default): In this case, the Popen class

uses os.execvp() to execute the child program. args should normally

be a sequence. A string will be treated as a sequence with the string

as the only item (the program to execute).

On UNIX, with shell=True: If args is a string, it specifies the

command string to execute through the shell. If args is a sequence,

the first item specifies the command string, and any additional items

will be treated as additional shell arguments.

On Windows: the Popen class uses CreateProcess() to execute the child

program, which operates on strings. If args is a sequence, it will be

converted to a string using the list2cmdline method. Please note that

not all MS Windows applications interpret the command line the same

way: The list2cmdline is designed for applications using the same

rules as the MS C runtime.

bufsize, if given, has the same meaning as the corresponding argument

to the built-in open() function: 0 means unbuffered, 1 means line

buffered, any other positive value means use a buffer of

(approximately) that size. A negative bufsize means to use the system

default, which usually means fully buffered. The default value for

bufsize is 0 (unbuffered).

stdin, stdout and stderr specify the executed programs' standard

input, standard output and standard error file handles, respectively.

Valid values are PIPE, an existing file descriptor (a positiveinteger),
an existing file object, and None. PIPE indicates that a

new pipe to the child should be created. With None, no redirection

will occur; the child's file handles will be inherited from the

parent. Additionally, stderr can be STDOUT, which indicates that the

stderr data from the applications should be captured into the same

file handle as for stdout.

If preexec_fn is set to a callable object, this object will be called

in the child process just before the child is executed.

If close_fds is true, all file descriptors except 0, 1 and 2 will be

closed before the child process is executed.

if shell is true, the specified command will be executed through the

shell.

If cwd is not None, the current directory will be changed to cwd

before the child is executed.

If env is not None, it defines the environment variables for the new

process.

If universal_newlines is true, the file objects stdout and stderr are

opened as a text files, but lines may be terminated by any of '\n',

the Unix end-of-line convention, '\r', the Macintosh convention or

'\r\n', the Windows convention. All of these external representations

are seen as '\n' by the Python program. Note: This feature is only

available if Python is built with universal newline support (the

default). Also, the newlines attribute of the file objects stdout,

stdin and stderr are not updated by the communicate() method.

The startupinfo and creationflags, if given, will be passed to the

underlying CreateProcess() function. They can specify things such as

appearance of the main window and priority for the new process.

(Windows only)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: