无法使用Paramiko远程执行tcpdump

时间:2015-10-05 18:30:29

标签: python linux ssh paramiko

我正在尝试使用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的输出文件,但它是空的。

2 个答案:

答案 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