2015-10-05 117 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