【问题标题】:Unable to execute tcpdump remotely with Paramiko无法使用 Paramiko 远程执行 tcpdump
【发布时间】:2016-01-02 12:18:41
【问题描述】:

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

【问题讨论】:

  • print stdout.read()print stderr.read() 显示什么?
  • sudo:对不起,你必须有一个 tty 才能运行 sudo

标签: python linux ssh paramiko


【解决方案1】:

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

Defaults requiretty 将其替换为

#Defaults requiretty

【讨论】:

    【解决方案2】:

    在您的环境中,您无法从 paramiko 连接运行 sudo

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多