不允许执行“ping”

时间:2017-01-10 13:33:13

标签: python paramiko

当我尝试使用Paramiko来执行任何命令时

  

不允许执行“[COMMAND]”。

但是,如果我通过使用Putty这样做,它可以正常工作,任何想法可能导致这个?

的paramiko:

>>>ssh.connect('server',port=22,username='user',password='pass'
>>>stdin,stdout,stderr = ssh.exec_command('ping 8.8.8.8 -c 2')
>>>output = stdout.readlines()
>>>print output
[]
>>>error = stderr.readlines()
>>>print error
>>>u'"ping" isn\'t allowed to be executed.\n'

腻子:

user@server:~$ ping 8.8.8.8 -c 2
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=57 time=15.928 ms
64 bytes from 8.8.8.8: seq=1 ttl=57 time=15.661 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 15.661/15.794/15.928 ms

1 个答案:

答案 0 :(得分:2)

Paramiko的exec_command(cmd)将调用/the/login/shell -c cmd来运行与ssh user@host cmd类似的命令。如果远程服务器上的登录shell不支持-c,则exec_command()将失败。因此,在使用exec_command()之前,我通常首先从命令行尝试ssh user@host cmd

invoke_shell()会起作用,因为它会启动交互式会话,就像您使用PuTTY手动连接到服务器一样。