2016-08-07 2 views
-1

Я пытаюсь выполнить скрипт Python (с циклом) для подключения в SSH, он работает, если все хорошо (пароль и маршрут), но прекратите, когда он не работает (неправильный пароль или нет маршрутов к хост). Вот важная часть сценария, как я могу контролировать, если все работает?Python Script Pexpect SSH

connexion = pexpect.spawn("ssh -o StrictHostKeyChecking=no "+user+"@" + ip) 
index=connexion.expect(':') 
connexion.sendline(password + "\r") 
connexion.expect('>') 
connexion.sendline('show clock \r') 
connexion.expect('>') 
connexion.sendline('exit') 
connexion.close() 

Я получаю ошибку:

Traceback (most recent call last): 
File "script.py", line 21, in <module> 
connexion.expect('>') 
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1418, in expect 
timeout, searchwindowsize) 
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1433, in expect_list 
timeout, searchwindowsize) 
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1521, in expect_loop 
raise EOF(str(err) + '\n' + str(self)) 
pexpect.EOF: End Of File (EOF). Exception style platform. 
<pexpect.spawn object at 0x7fcfeecee750> 
version: 3.1 
command: /usr/bin/ssh 
args: ['/usr/bin/ssh', '-o', 'StrictHostKeyChecking=no', '[email protected]'] 
searcher: <pexpect.searcher_re object at 0x7fcfeecee850> 
buffer (last 100 chars): '' 
before (last 100 chars): ' connect to host 10.9.128.5 port 22: No route to host\r\r\npassword\r\n\r\n' 

Благодарности

+0

Каковы ошибки, которые вы получаете? Причина, по которой вы могли бы поместить свой код в блок try и поймать ошибку, если пароль неверен, и снова попросите пользователя ввести пароль. Можете ли вы опубликовать несколько примеров своего кода, где он терпит неудачу, а также полную трассировку ошибок? – Harrison

+0

Traceback (самый последний вызов последнего): Файл "script.py", строка 21, в connexion.expect ('>') Файл «/usr/lib/python2.7/dist-packages/pexpect/__init__ .py ", строка 1418, в ожидании timeout, searchwindowsize) Файл« /usr/lib/python2.7/dist-packages/pexpect/__init__.py », строка 1433, в списке ожидающих тайм-аут, поиск) Файл" /usr/lib/python2.7/dist-packages/pexpect/__init__.py ", строка 1521, в expect_loop raise EOF (str (err) + '\ n' + str (self)) pexpect.EOF: End Файл (EOF). Платформа стиля исключения. 77140B

+0

Можете ли вы добавить эту ошибку к своему оригинальному сообщению и отформатировать его, чтобы он был легко читаемым? – Harrison

ответ

0

Проблема заключается в том, что хозяин 10.9.128.5 был недоступен в данный момент. ssh вернул это сообщение:

connect to host 10.9.128.5 port 22: No route to host 

И не то, что ожидалось.

0

Вы получаете исключение, которое должно быть обработано правильно. Ниже приведен код, который вы можете использовать в качестве примера, чтобы передать исключение и зарегистрировать его.

def ignore_exception_out(conn, text, timeout=10): 
     try: 
      conn.expect(text, timeout) 
     except Exception as e: 
      logging.log("Exception reached {0}".format(e)) 
      pass 
Смежные вопросы