2015-10-05 114 views
2

我试图使用Paramiko远程运行tcpdump。无法使用Paramiko远程执行tcpdump

ssh = paramiko.SSHClient() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    ssh.connect(ip_machine, username='root', password=password) 
    my_command = 'sudo timeout 10 tcpdump -i eth0 ip -w somefile' 
    stdin, stdout, stderr = ssh.exec_command(my_command) 
    channel = stdout.channel 
    channel.recv_exit_status() 
    ssh.close() 

程序立即退出,尽管timeout命令和recv_exit_status。 tcpdump的输出文件被创建,但它是空的。

+0

做什么'打印stdout.read()'和'打印stderr.read()'显示替换它? –

+0

sudo:对不起,你必须有一个tty来运行sudo – Bob

回答

3

在您的环境中,您不能从paramiko连接运行sudo

由于您连接为root,因此没有理由运行sudo。试试这个:

my_command = 'timeout 10 tcpdump -i eth0 ip -w somefile' 
1

如果您拥有的权限,你应该使用的命令使用sudo并没有安全问题,您可以配置sudo无终端的要求来执行命令。 在CentOS的cofiguration文件/etc/sudoers,注释以下行

Defaults requiretty

#Defaults requiretty