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

使用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)

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

相关推荐

    pexpect-3.3.tar.gz

    - Telnet会话:类似地,可以使用pexpect模拟Telnet会话,自动完成登录和命令执行。 - 软件安装:自动安装需要交互的软件,如在Linux环境中自动应答安装过程中的问题。 7. **pexpect与其他模块的结合** - 可以与`...

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

    使用了python中的pexpect模块,在测试代码之前,可输入python进入交互界面,输入help(‘pexpect’),查询是否本地含有pexpect模块。 如果没有,linux系统输入 easy_install pexpect便可自动安装。 测试代码,连接...

    pexpect-4.3.0.tar.gz

    通过安装和使用Pexpect,开发者可以编写Python程序来自动交互和控制其他程序,例如SSH登录、执行命令、接收输出等。而IPython Genutils则为IPython提供了必要的辅助功能,增强了其作为强大开发和分析平台的能力。...

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

    Python中的Pexpect模块是一个强大的工具,它允许程序员自动化与命令行接口交互的过程,尤其是涉及到SSH、FTP、TELNET等协议的场景。Pexpect基于Expect语言的概念,为Python开发者提供了便捷的方式来控制子进程,通过...

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

    以下是一个使用Pexpect通过SSH连接到远程服务器并执行命令的简单脚本: ```python import pexpect def login(port, user, passwd, ip, command): child = pexpect.spawn('ssh -p {} {}@{}'.format(port, user, ip)...

    paramiko.tar.gz

    Paramiko是一个在Python中实现的SSHv2协议库,提供了客户端和服务器端的实现,能够进行安全的远程命令执行和文件传输。它基于OpenSSH,是Python社区广泛使用的开源库,用于处理加密网络通信,特别是在自动化任务和...

    python学习个人笔记.docx

    - 解压并进入目录执行安装命令: ```shell [root@localhost st]# tar xzvf pexpect-2.3.tar.gz [root@localhost st]# cd pexpect-2.3 [root@localhost pexpect-2.3]# python ./setup.py install ``` - 验证...

    Python-python自动化运维技术与最佳实践书中示例及案例

    5. **自动化工具**:如使用paramiko进行SSH连接,pexpect用于进程期望,fabric实现远程命令执行,这些库在实际运维工作中十分常见。 6. **系统管理**:包括使用Python接口操作Linux系统,如使用subprocess模块执行...

    20个常用Python运维库和模块

    pexpect可以理解为Linux下expect命令的Python封装,可以实现对ssh、ftp、passwd、telnet等命令行的自动交互。 13. paramiko paramiko基于Python实现SSHv2协议,支持认证及密钥方式。它用于远程命令执行、文件传输、...

    linux下使用rsync同步目录

    在 Linux 下使用 rsync 同步目录时,我们可以使用两种基本模式:从主机拉取数据到备机,或从备机推数据到主机。这两种模式的关键在于 rsync 命令的参数设置。 1. 从主机拉数据到备机: 使用 `-avzP --delete` 参数...

    Python-Python实现跨平台批量运维小神器

    同时,Python的第三方库如`paramiko`(用于SSH连接)、`fabric`(简化远程执行任务)和`pexpect`(控制子进程,常用于自动化脚本)等,为批量运维提供了强大的支持。 3. **批量操作**:在Python中,通过循环结构和...

    python常用运维脚本实例小结

    在Python中,我们可以利用`os`模块的`popen`函数来执行shell命令并获取其输出。以下是一个计算所有进程内存占用总和的Python脚本: ```python import os list = [] sum = 0 str1 = os.popen('ps aux', 'r')....

    Oracle-Automatic-Installation:Oracle DBA Rman

    Python的`os`、`subprocess`模块可调用shell命令,`yaml`或`json`处理响应文件,`paramiko`库支持SSH连接远程服务器执行命令,甚至可以结合`pexpect`模块实现交互式命令的自动化。 总结,Oracle数据库的自动化安装...

    跳板

    Python的getpass模块可以安全地获取用户密码,而pexpect库则可以帮助管理子进程和交互式命令,比如执行sudo操作。 4. **会话管理**:为了跟踪用户会话和控制并发连接,Python的threading或多进程模块可以用于并发...

Global site tag (gtag.js) - Google Analytics