pexpect 에서 제공 하 는 SSH 모듈 을 사용 하여 Liux 에 로그 인하 고 명령 을 실행 합 니 다.

pexpect 설치:
tar -zxvf pexpect-2.3.tar.gz

압축 해제 후 루트 로 설치:
#python setup.py install

linux 에서 로그 인 스 크 립 트 진행:
#!/usr/bin/env python
import pxssh
import getpass
try:
    s = pxssh.pxssh()
    hostname = raw_input('hostname: ')  
    username = raw_input('username: ')  
     password = getpass.getpass('password: ')
     s.login (hostname, username, password)
    s.sendline ('uptime')  # run a command,
     s.prompt()             # match the prompt
    print s.before         # print everything before the propt.
    s.sendline ('ls -l')
    s.prompt()
    print s.before
    s.sendline ('df')
    s.prompt()
    print s.before
    s.logout()
except pxssh.ExceptionPxssh,e:
    print "pxssh failed on login."
    print str(e)

위 스 크 립 트 를 실행 할 때 오류 가 발생 할 수 있 습 니 다:
Traceback (most recent call last):
  File "./sshlinux.sh", line 10, in
    s.login (hostname, username, password) 
  File "/usr/local/python-2.7/lib/python2.7/site-packages/pxssh.py", line 243, in login
    if not self.synch_original_prompt():
  File "/usr/local/python-2.7/lib/python2.7/site-packages/pxssh.py", line 134, in synch_original_prompt
    self.read_nonblocking(size=10000,timeout=1) # GAS: Clear out the cache before getting the prompt
  File "/usr/local/python-2.7/lib/python2.7/site-packages/pexpect.py", line 824, in read_nonblocking
    raise TIMEOUT ('Timeout exceeded in read_nonblocking().')
pexpect.TIMEOUT: Timeout exceeded in read_nonblocking().
이 문 제 는 오류 정보의 경 로 를 조정 하여 수정 할 수 있 습 니 다./usr/local/python-2.7/lib/python 2.7/site-packages/pxssh.py 파일 은 pxssh.py 파일 에 있 습 니 다.
def synchoriginal_prompt(self):방법 다음 self.readnonblocking(size=10000,timeout=1)앞 에 두 줄 코드 추가
self.sendline()
time.sleep(0.5)

문 제 를 해결 할 수 있다.

좋은 웹페이지 즐겨찾기