`
flyeagle
  • 浏览: 211652 次
  • 来自: ...
社区版块
存档分类
最新评论

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

阅读更多
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)

可以解决问题。
分享到:
评论

相关推荐

    SSH-Interaction:使用paramiko和pexpect进行SSH交互

    SSH交互 使用paramiko和pexpect进行SSH交互

    Python:pexpect模块下载

    Python中的pexpect模块下载Python中的pexpect模块下载

    pexpect模块

    很好的工具包

    python pexpect ssh 远程登录服务器的方法

    今天小编就为大家分享一篇python pexpect ssh 远程登录服务器的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    python之pexpect实现自动交互的例子

    Pexpect 是 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等...

    使用python的pexpect模块,实现远程免密登录的示例

    下面介绍的代码,是使用python的pexpect模块实现的: 代码 import os import sys import pexpect import datetime #获取昨天的日期 date_yes = (datetime.date.today()-datetime.timedelta(days=1)).strftime('%Y%m...

    Python实现ssh批量登录并执行命令

    现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等。如果一台一台得手工去操作,费时又费力,如果要进行多个操作就更麻烦啦。 或许你会想到网络同传,网络同...

    pexpect-2.3.tar.gz

    Pexpect can be used for automating interactive applications such as ssh, ftp, passwd, telnet, etc. It can be used to a automate setup scripts for duplicating software package installations on ...

    Python Pexpect库的简单使用方法

    最近需要远程操作一个服务器并执行该服务器上的一个python脚本,查到可以使用Pexpect这个库。记录一下。 什么是Pexpect?Pexpect能够产生子应用程序,并控制他们,并能够通过期望模式对子应用的输出做出反应。...

    python Pexpect 实现输密码 scp 拷贝的方法

    本想直接在bash文件中使用Pexpect 来实现自动输入密码,并scp拷贝文件,但是权限的限制导致不能安装使用Pexpect 。 最后考虑使用python实现。 环境: python2.7 centos from pexpect import * import os cwd = os....

    pexpect-4.0.1

    Pexpect是一个用来启动子程序并对其进行自动控制的Python模块,它可以用来和像ssh,ftp,passwd,telnet等命令行程序进行自动交互。

    pexpect-3.3.tar.gz

    Python 模块的代码,pexpect3.3.tar.gz ...........

    ssh批量登录并执行命令的python实现代码

    现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等。如果一台一台得手工去操作,费时又费力,如果要进行多个操作就更麻烦啦。 或许你会想到网络同传, 网络同...

    使用ssh、scp不需要密码

    使用ssh、scp不需要密码。刚好项目遇到这个问题,学学挺好的。

    Python安装使用命令行交互模块pexpect的基础教程

    Pexpect是一个纯Python模块,可以用来和ssh、ftp、passwd、telnet等命令行命令进行交互使用,在Linux系统下尤其好用,下面我们就来具体来看一下Python安装使用命令行交互模块pexpect的基础教程:

    对Python Pexpect 模块的使用说明详解

    今天小编就为大家分享一篇对Python Pexpect 模块的使用说明详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    pexpect_deploy_tools:批量远程操作脚本-- scp 和 ssh

    pexpect_deploy_tools 批量远程操作脚本-- scp 和 ssh 无环境依赖,解压压缩包即可使用,较原生 expect 慢,可定制性高。 使用方法: 当前目录创建 ip list: 192.168.0.100 192.168.0.101 pscp.py 拷贝本地文件到...

    pexpect, 在伪终端中,用于控制交互程序的python 模块.zip

    pexpect, 在伪终端中,用于控制交互程序的python 模块 Pexpect是一个纯 python 期望模块Pexpect使 python 成为控制其他应用程序的更好工具。Pexpect是用于生成子应用程序。控制它们并响应它的输出中预期模式的纯 ...

Global site tag (gtag.js) - Google Analytics