2016-08-07 4 views
-1

SSH로 연결하는 파이썬 스크립트 (루프가 있음)를 만들려고하는데, 모든 것이 좋으면 (패스워드와 루트) 작동하지만 작동하지 않을 때 멈춘다. 호스트). 스크립트의 중요한 부분입니다. 모든 것이 작동하면 어떻게 제어 할 수 있습니까?파이썬 스크립트 Pexpect SSH

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 블록에 코드를 넣고 암호가 틀리면 오류를 catch하고 사용자에게 다시 암호를 묻는 프롬프트가 표시 될 수 있습니다. 전체 오류 추적뿐만 아니라 실패한 코드 예제를 게시 할 수 있습니까? – Harrison

+0

역 추적 (마지막으로 가장 최근 통화) : 파일 "script.py", 라인 (21), connexion.expect ('>') 파일 "에 /usr/lib/python2.7/dist-packages/pexpect/__init__ .py ", line 1418, expect timeout, searchwindowsize) expect_list에"/usr/lib/python2.7/dist-packages/postpect/package/pexpect/__init__.py "파일이 있습니다. timeout, searchwindowsize) 파일" /usr/lib/python2.7/dist-packages/pexpect/__init__.py "1521 줄의 expect_loop EOF (str (err) + '\ n'+ str (self))를 올리기 pexpect.EOF : 끝 파일 (EOF). 예외 스타일 플랫폼. 77140B

+0

원본 게시물에 오류를 추가하고 쉽게 읽을 수 있도록 포맷 할 수 있습니까? – Harrison

답변

0

문제는 호스트 10.9.128.5 순간에 도달 할 수없는 것을입니다 :

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() 

가 나는 오류가 발생합니다.

connect to host 10.9.128.5 port 22: No route to host 

그리고하지가 예상 있었는지 : ssh이 메시지를 반환했습니다.

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