【发布时间】:2012-01-05 14:06:40
【问题描述】:
我尝试使用 Popen 创建一个子进程。首先是我的代码:
hostname = 'host'
servername = 'server'
commandargs = ['/usr/sbin/mminfo',' -o n',' -s',servername,' -q "client=\'',hostname,'\',savetime>=last day"',' -r "client,name"']
process = subprocess.Popen(commandargs, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
问题是执行的命令失败并显示一条消息,即所联系的服务器不可用。似乎没有使用变量主机名... 尝试使用字符串而不是列表,作为 Popen 中的命令(使用 Shell=True),一切正常。
有人知道代码有什么问题吗?
问候。 斯蒂芬
【问题讨论】:
-
不要引用主机名,不需要。有效的主机名没有任何可以扩展为奇怪的字符,也没有空格。您应该做的另一件事是将命令中的每个实体分开,不要使用“-o n”,而是使用“-o”、“n”等。
-
hostname = 'host' 你的意思是 ^?这是我用测试主机名填充变量的测试。
标签: python string list subprocess popen