2016-10-17 3 views
0

Я пытаюсь передать сервер с помощью Paramiko и выполнить команду. Но paramiko.exec_command() возвращается с ошибкой. Почему это происходит?paramiko.exec_command() не выполняет и возвращает «Дополнительные параметры, найденные в CLI»

Это мой Python скрипт:

import paramiko 

ssh = paramiko.SSHClient() 
ssh.load_system_host_keys() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect('10.126.141.132', username='usrm', password='passwd') 

stdin, stdout, stderr = ssh.exec_command("show chassis") 

print(stdout.readlines()) 

ssh.close() 

При выполнении он возвращает с этим сообщением:

[ 'Дополнительные PARAMS найдены в CLI, это не поддерживается, после выхода из сеанса CLI: \ n ']

Я использую Python 3.5.2 :: Anaconda 4.1.1 (64-разрядная версия) с Paramiko в Windows.

Я пробовал команды вручную и работает.

+0

обеспечивает полную трассировку –

+0

Проверьте, 'SSH usrm @ IP шоу chassis' работает из командной строки. – pynexj

+0

@whjm Пробовал команду в Putty. Он дает информацию о шасси, как ожидалось. Пробовали и другие команды, которые дают действительные выходы. Но сценарий дает это сообщение выше. Не знаю, почему. – dmaneesh7

ответ

0

На основании Вашего последнего комментария:

Я установил Cygwin терминал и SSH'd сервер с помощью команды ... он пришел с ошибкой Extra params. Команда я выполнил: ssh [email protected] "show chassis", выход: No entry for terminal type "dumb"; using dumb terminal settings. Extra params found in CLI, this is not supported, exiting the CLI session:

это походит на usrmсчета входа оболочки на сервере SSH не разрешено запускать команды в не интерактивном режиме. Чтобы решить эту проблему, вы должны использовать invoke_shell() так:

chan = ssh.invoke_shell() 
chan.sendall('show chassis\r') 
s = chan.recv(4096) 
print s 
+0

Большое спасибо за то, что оно работает ... recv() возвращает все на оболочке, а также \ r \ n, приглашение # и b '... есть ли способ предотвратить это или мне нужно просто форматировать вывод? – dmaneesh7

+0

Как будто вы вручную взаимодействуете с оболочкой, а 'recv()' (и 'recv_stderr') возвращает все, включая приглашения командной оболочки. – pynexj

+0

нашел способ удалить эти специальные charatcers ... recv() возвращает 'bytes' ... с помощью' recv(). Decode ("UTF-8") 'мы получим правильную строку unicode без b 'и экранированные символы ... – dmaneesh7

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

  • Нет связанных вопросов^_^