2014-02-17 1 views
0

pexpect를 사용하여 로컬 호스트의 SSH에 연결하고 SSH 세션을 설정 한 후 파일을 나열하려고합니다. 세션이 설정되었지만 'ls'의 결과를 얻지 못합니다. 나는 FTP에 그것을 할 수 있었다하지만 SSH로, 여기에 코드 한 : 여기Pexpect를 사용하여 SSH에서 'LS'출력을 가져올 수 없습니다.

import pexpect 
import time 
import sys 
child=pexpect.spawn('ssh 127.0.0.1') 
child.logfile=sys.stdout 
child.expect('[P|p]assword') 
child.sendline('[email protected]?') 
child.expect('Welcome') 
print child.before, 
print child.after 
time.sleep(3) 
child.sendline('ls -l') 
time.sleep(3) 
child.expect('$') 
print child.before, 
print child.after 
child.sendline('logout') 
child.close 

나는 또한 과정을 잘하려고 노력하지만, 로컬 호스트의 SSH의 기치 사이에 '1! -l'을 인쇄 . 그러나 파일을 나열하지 않습니다. Plz은 힌트를 제공합니다. 추가 plz는 pentesting 목적을 위해 깊이있는 파이썬을 공부하기위한 좋은 책이나 링크를 제안합니다. 고마워 ... (12 시간 만 지나면 온라인 상태가됩니다. 잠자기 시간입니다.)

답변

2

넘겨주는 패턴은 리터럴 문자열이 아닌 정규식입니다. 따라서 $은 pexpect가 작동하는 방식으로 인해 문자열의 끝과 일치합니다.

달러 기호 (\$)를 이스케이프하거나 expect_exact()을 사용하여 일반 문자열을 사용할 수 있습니다.

관련 문제