在linux上运行ssh连接脚本如下:
#!/usr/bin/python
import pxssh
import getpass
try:
s = pxssh.pxssh()
hostname=raw_input('hostname: ')
username=raw_input('username: ')
password=raw_input('password: ')
s.login(hostname,username,password)
s.sendline('uptime')
s.prompt()
print s.before
s.sendline('ll')
s.prompt()
print s.before
s.sendline('df -hl')
s.prompt()
print s.before
s.logout()
except pxssh.ExceptionPxssh, e:
print "pxssh failed on login"
print str(e)
报错信息如下:
[root@agent02 studyPython]# ./test1.py
hostname: 192.168.107.80
username: oss
password: XXXX
Traceback (most recent call last):
File "./test1.py", line 9, in
s.login(hostname,username,password)
File "/usr/lib/python2.6/site-packages/pxssh.py", line 243, in login
if not self.synch_original_prompt():
File "/usr/lib/python2.6/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/lib/python2.6/site-packages/pexpect.py", line 824, in read_nonblocking
raise TIMEOUT ('Timeout exceeded in read_nonblocking().')
pexpect.TIMEOUT: Timeout exceeded in read_nonblocking().
[root@agent02 studyPython]# find / -name pxssh.py
/usr/local/rx/pexpect/pexpect-2.3/pxssh.py
/usr/local/rx/pexpect/pexpect-2.3/build/lib/pxssh.py
/usr/lib/python2.6/site-packages/pxssh.py
解决办法:
[root@agent02 studyPython]# find / -name pxssh.py
/usr/local/rx/pexpect/pexpect-2.3/pxssh.py
/usr/local/rx/pexpect/pexpect-2.3/build/lib/pxssh.py
/usr/lib/python2.6/site-packages/pxssh.py
修改/usr/lib/python2.6/site-packages/pxssh.py,
在def synch_original_prompt (self):方法下第一个self.read_nonblocking(size=10000,timeout=1)前面增加两行代码:self.sendline()
time.sleep(0.5)
修改以后,可以正常工作。