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)
可以解决问题。
分享到:
相关推荐
- Telnet会话:类似地,可以使用pexpect模拟Telnet会话,自动完成登录和命令执行。 - 软件安装:自动安装需要交互的软件,如在Linux环境中自动应答安装过程中的问题。 7. **pexpect与其他模块的结合** - 可以与`...
使用了python中的pexpect模块,在测试代码之前,可输入python进入交互界面,输入help(‘pexpect’),查询是否本地含有pexpect模块。 如果没有,linux系统输入 easy_install pexpect便可自动安装。 测试代码,连接...
通过安装和使用Pexpect,开发者可以编写Python程序来自动交互和控制其他程序,例如SSH登录、执行命令、接收输出等。而IPython Genutils则为IPython提供了必要的辅助功能,增强了其作为强大开发和分析平台的能力。...
Python中的Pexpect模块是一个强大的工具,它允许程序员自动化与命令行接口交互的过程,尤其是涉及到SSH、FTP、TELNET等协议的场景。Pexpect基于Expect语言的概念,为Python开发者提供了便捷的方式来控制子进程,通过...
以下是一个使用Pexpect通过SSH连接到远程服务器并执行命令的简单脚本: ```python import pexpect def login(port, user, passwd, ip, command): child = pexpect.spawn('ssh -p {} {}@{}'.format(port, user, ip)...
Paramiko是一个在Python中实现的SSHv2协议库,提供了客户端和服务器端的实现,能够进行安全的远程命令执行和文件传输。它基于OpenSSH,是Python社区广泛使用的开源库,用于处理加密网络通信,特别是在自动化任务和...
- 解压并进入目录执行安装命令: ```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 ``` - 验证...
5. **自动化工具**:如使用paramiko进行SSH连接,pexpect用于进程期望,fabric实现远程命令执行,这些库在实际运维工作中十分常见。 6. **系统管理**:包括使用Python接口操作Linux系统,如使用subprocess模块执行...
pexpect可以理解为Linux下expect命令的Python封装,可以实现对ssh、ftp、passwd、telnet等命令行的自动交互。 13. paramiko paramiko基于Python实现SSHv2协议,支持认证及密钥方式。它用于远程命令执行、文件传输、...
在 Linux 下使用 rsync 同步目录时,我们可以使用两种基本模式:从主机拉取数据到备机,或从备机推数据到主机。这两种模式的关键在于 rsync 命令的参数设置。 1. 从主机拉数据到备机: 使用 `-avzP --delete` 参数...
同时,Python的第三方库如`paramiko`(用于SSH连接)、`fabric`(简化远程执行任务)和`pexpect`(控制子进程,常用于自动化脚本)等,为批量运维提供了强大的支持。 3. **批量操作**:在Python中,通过循环结构和...
在Python中,我们可以利用`os`模块的`popen`函数来执行shell命令并获取其输出。以下是一个计算所有进程内存占用总和的Python脚本: ```python import os list = [] sum = 0 str1 = os.popen('ps aux', 'r')....
Python的`os`、`subprocess`模块可调用shell命令,`yaml`或`json`处理响应文件,`paramiko`库支持SSH连接远程服务器执行命令,甚至可以结合`pexpect`模块实现交互式命令的自动化。 总结,Oracle数据库的自动化安装...
Python的getpass模块可以安全地获取用户密码,而pexpect库则可以帮助管理子进程和交互式命令,比如执行sudo操作。 4. **会话管理**:为了跟踪用户会话和控制并发连接,Python的threading或多进程模块可以用于并发...