读书人

运用python paramiko的exec_command无

发布时间: 2012-09-18 16:21:42 作者: rapoo

使用python paramiko的exec_command无法执行延迟得到结果的命令
远程登录成功,一般的如"ls -ltr"之类也可以得到命令相应的结果,但是想要执行延迟得到结果的命令,比如sipp。
无法触发对应的结果。
下面例子中是sipp的主叫侧发起呼叫命令,在被叫侧的sipp进程已经人工开启,理论上只要主叫侧命令执行,被叫侧
至少能得到一条sip消息。



#!/usr/bin/env python
import paramiko
import time

hostname = '10.170.9.35'
port = 22
username = 'root'
password = 'mgcroot'

sipp_command_uac = './sipp.3.1.src/sipp 192.168.55.4:5060 -sf ./scenario/uac_video_amr.xml -s 1411420123456 -i 192.168.55.242 -p 5071 -mi 192.168.55.242 -mp 21310 -aa -r 20 -d 10000 -t u1 -m 1'

ls = 'ls -ltr *.py'

if __name__ == '__main__':
paramiko.util.log_to_file('paramiko.log')
s = paramiko.SSHClient()
s.load_system_host_keys()
s.connect(hostname, port, username, password)

print type(sipp_command_uac)
stdin, stdout, stderr = s.exec_command('cd /home/ezhuhao ;' + sipp_command_uac + '; sleep 12')

print stdout.read()

s.close()

[解决办法]
我也有相同的苦恼,python似乎不能实现,你看我发过的帖子,我用python3.3的subprocess.Popen()操作,它可以传递子进程参数,并可以用PIPE读取子进程输出。可能我的理解有偏差,你试试用下,我也期待结果。
PS:我觉得你应该用list来做命令,不要用带一大堆空格的字符串做命令参数。

读书人网 >perl python

热点推荐