我正在尝试使用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 :(得分:3)
在您的环境中,您无法从paramiko连接运行sudo
。
由于您以root
身份进行连接,因此您无需运行sudo
。试试这个:
my_command = 'timeout 10 tcpdump -i eth0 ip -w somefile'
答案 1 :(得分:1)
如果您具有权限并且您应该使用带有sudo的命令并且没有安全问题,则可以配置sudo
以执行命令而无需tty。
在配置文件为/etc/sudoers
时,请注释以下行
Defaults requiretty
将其替换为
#Defaults requiretty