我试图用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