使用pexpect提供的SSH模块登陆linux,并执行命令

    xiaoxiao2021-03-27  31

    pexpect安装: tar -zxvf pexpect-2.3.tar.gz 解压后使用root进行安装: #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 <module>     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/python2.7/site-packages/pxssh.py文件,在pxssh.py文件中: 在def synch_original_prompt (self):方法下第一个self.read_nonblocking(size=10000,timeout=1) 前面增加两行代码 self.sendline() time.sleep(0.5) 可以解决问题。
    转载请注明原文地址: https://ju.6miu.com/read-664542.html

    最新回复(0)