2016-10-14 3 views
1

Я новичок пытается сделать SSH писать базовый код, я попробовал все, не в состоянии отладки это, Мой код выглядит следующим образом:Python скрипт для SSH

import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
print ("1") 
ssh.connect('196.5.5.6', username='abc', password='abc') 
print ("2") 
stdin, stdout, stderr = ssh.exec_command('show version') 
print ("3") 
output= stdout.readlines() 
print ("4") 
print(output) 

Выход я получаю 1
В 4 это застрял где-то, есть проблема, что я не могу получить данные, пожалуйста, помогите кому-нибудь. Код просто зависает на шаге вывода. Всюду решение полностью одно и то же.

+1

Вы не должны быть печать stdout.readlines()? – gplayer

+0

Значения поступают на выход, Затем я печатаю вывод –

+0

Еще он будет повесить трубку, просто попробовал, что –

ответ

0

Вам не нужно делать readlines() на stdin. Вы можете распечатать его напрямую. readlines() ожидают файл, который нужно открыть и прочитать из файла. В то время как stdin, stdout, stderr - это не файлы, а блок строк (или строковый буфер, используемый в канале paramiko). Если вы проверите тип , stdout, stderr, вы найдете <class 'paramiko.channel.ChannelFile'>, которые не являются точно файлами, но являются файлами, подобными объектам, созданным для хранения буферов в канале paramiko.

import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
print 1 
ssh.connect('196.5.5.6', username='abc', password='abc') 
print 2 
stdin, stdout, stderr = ssh.exec_command('show version') 
print 3 
output= stdin 
print 4 
print(output) 
print '---', stdout 
print '---==', stderr 
+0

да Pabitra Я получил это, но это вернет вам что-то вроде этого: –

+0

+0

Да, это файл paramico channelfile, а не фактический файл. Таким образом, вы не можете использовать метод readlines(). –

0

Вы должны ввести команды попробовать это

import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
print ("1") 
ssh.connect('ip', username='user', password='pass') 
print ("2") 
stdin, stdout, stderr = ssh.exec_command('show version') 
print ("3") 
stdin,stdout,stderr = ssh.exec_command("ls /") 
print stdout.readlines() 
+0

Спасибо за редактирование, к сожалению, есть проблема только с stdout.readlines()! , его все еще висит код –

+0

действительно? ill screen shot my output – thesonyman101

+0

https://s14.postimg.org/x92zgbuch/hmmmmmmmmm.png – thesonyman101

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