2017-01-10 5 views
2

Когда я пытаюсь использовать Paramiko для EXEC любой команды я получаю«пинг» не могут быть выполнен

«[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' 

Шпатлевка:

[email protected]:~$ 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

См. [Этот вопрос] (http://unix.stackexchange.com/questions/174470/how-to-enable-using-commands-on-remote-host-using-ssh-without-password) по адресу http: //unix.stackexchange.com. Попробуйте поместить эту команду в двойные кавычки: ''" ping 8.8.8.8 -c 2 "''. –

+1

вы можете попробовать с какой-то другой командой, например 'ls'? –

+0

@ Jean-FrançoisFabre yeap так же происходит с каждой командой – Raulnd

ответ

2

Paramiko-х exec_command(cmd) будет вызывать /the/login/shell -c cmd запустить команду, которая похожа на ssh [email protected] cmd. Если ваша оболочка входа на удаленном сервере не поддерживает -c, тогда exec_command() не удался. Поэтому перед использованием exec_command() Обычно я сначала попробую ssh [email protected] cmd из командной строки.

invoke_shell() будет работать, потому что он запускает интерактивную сессию так же, как вы подключаетесь к серверу вручную с помощью PuTTY.

Смежные вопросы