当我尝试使用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
答案 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
手动连接到服务器一样。