无法使用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() 

该程序立即退出,尽pipetimeout命令和recv_exit_status 。 tcpdump的输出文件被创build,但是是空的。

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

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

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

如果你有权限,你应该使用命令与sudo,没有安全问题,你可以配置sudo执行命令,而不需要一个tty。 在配置文件上是/etc/sudoers ,注释如下

通过替换它来Defaults requiretty

#Defaults requiretty