当前位置:首页 » 编程语言 » python安装pexpect

python安装pexpect

发布时间: 2023-01-20 19:56:04

python , pexpect 远程控制

既然bash提示"匹配错误,应该是命令行相关参数的quoting有问题,仔细检查这两行
>>> sql = "mysql -D logappconfig -e \\\"UPDATE app.Settings SET appAMPM='AM'\\\""
>>> ssh = pexpect.spawn('ssh %s@%s \"%s\"' % ('toor', ip, cmd))

我没有运行环境,无法调试。只能告诉你应该是这里有问题。

Ⅱ 如何升级到python3版本并且安装pip3及ipython3

如何升级到python3版本并且安装pip3及ipython3
确保你的系统上已经安装好了 pip3. 如果没有,请使用命令:
sudo dnf install python3-pip
进行安装。
安装好了之后在命令行输入pip3会显示它的帮助信息。

开始安装tornado。首先,按照常理,使用命令:
sudo pip3 install tornado==4.3
如果4.3已经不是最新版本,请自行替换为最新版本。
经过小编尝试,发现容易出现 timeout 错误。

Ⅲ python 的pexpect模块怎么安装

当然,ssh登录还可以使用pexpect的run函数实现:
#events是一个字典,定义了expect和sendline的对应关系
pexpect.run('ssh [email protected]',events={'password:','123456'})

针对ssh远程登录,pexpect又派生出了pxssh类,在ssh会话操作上再做一层封装
其常用方法是:
login() #建立ssh连接
logout() #断开ssh连接
prompt() #等待系统提示符,用于等待命令执行结束

Ⅳ Python 在windows中如何安装pexpect呢python使用什么版本,pexpec

可以使用winpexpect

linux 安装python拓展包pexpect

哦。因为你是egg格式。所以需要安装一个setup tool,也有可能是ezsetup。这个在它的安装里有一个详细提示。

distuils.core是python的setup.py里引用的一个安装包。通常python安装分发包都要使用这个库。

从现在这个情况看。你的机器上的python似乎不是一个完整版本。

我以前在suse的linux上发现过这种问题。

你可以单独安装一个自己的python版本。这样linux原有的python与你安装的python相互不影响都可以使用。

Ⅵ 怎样用python实现scp

scp 功能很强大,但需要人工输入 password, 当然可以通过把 公钥保存在远程主机的 ~/.ssh 目录中,而后就不用输入password,但这需要配置.

用 sshpass 可能在命令输入 password, 但 需要用 “sudo apt-get install sshpass” 安装
如果不想用上面两种方法,可以用 expect 编写脚本可以帮助我们自动交互

虽然 Python 也提供 pexpect 模块,但既然 expect 很简单,为何不直接用 os.system() 去执行呢?

下面是我编写的类,实现了远程复制

[html] view plain
class RemoteShell:

def __init__(self, host, user, pwd):
self.host = host
self.user = user
self.pwd = pwd

def put(self, local_path, remote_path):
scp_put = '''
spawn scp %s %s@%s:%s
expect "(yes/no)?" {
send "yes\r"
expect "password:"
send "%s\r"
} "password:" {send "%s\r"}
expect eof
exit'''
os.system("echo '%s' > scp_put.cmd" % (scp_put % (os.path.expanser(local_path), self.user, self.host, remote_path, self.pwd, self.pwd)))
os.system('expect scp_put.cmd')
os.system('rm scp_put.cmd')

但发现每次文件都没有复制完,我想看expect 究竟做了什么事情,还好 expect 提供 -d 参数给出更多的信息。
最后发现是被复制文件太大,expect 超时退出了

在脚本前加入 “set timeout -1" 就OK了

[html] view plain
scp_put = '''
set timeout -1
spawn scp %s %s@%s:%s
expect "(yes/no)?" {
send "yes\r"
expect "password:"
send "%s\r"
} "password:" {send "%s\r"}
expect eof
exit'''

Ⅶ pexpect 跨平台(WIN、LINUX)简明教程

详细的内容可以参考下面的参考文档,下面的内容主要是为网络设备运维人员使用的pexpect 跨平台简明教程。

Expect 程序主要用于人机对话的模拟,就是那种系统提问,人来回答 yes/no ,或者账号登录输入用户名和密码等等的情况。
pexpect是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。它可以用来实现与ssh, ftp, telnet等程序的自动交互。

send命令后执行结果内容保存在buffer中,这时child.expect('keyword')后,child.before即为“keyword”之前的字符串,child.after即为匹配的”keyword”字符串。
command的执行结果都保存在一个buffer中,每次执行expect时都从buffer中开始检查匹配的pattern,如果找到了匹配的pattern,则所有在匹配处之前的内容都从buffer中清除。
(这边没有看明白也没有关系,可以看后面的实践篇例子)

通常维护人员有的偏向于用WIN系统,有的偏向于LINUX系统。所以前期团队希望形成一个统一框架的时候就出现了一个难题。框架如何适用于不同的系统。
LInux系统pexpect包,win系统前期尝试使用winpexpect,但是程序改动很大,并没有调试成功。
如何在WIN系统使用python的pexpect包很难找到相关资料,某乎上都是类似的疑问没有解答。
团队成员增加后,终于有了新的思路 , 团结就是力量 。

通过这个模块进行不同系统的适配。
将plink.exe装在python的文件夹在python的安装目录下,win系统可以同样使用pexpect模块

参考信息1:Pexpect 官方文档 New in version 4.0: Windows support。Pexpect can be used on Windows to wait for a pattern to be proced by a child process, using [ pexpect.popen_spawn.PopenSpawn ]
参考信息2:PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。plink是可以独立使用的exe实现形式,可以让我们直接在命令行制定好命令,然后执行,完成后自动关闭session。ssh是一个安全通道协议。plink是这个通道协议的一个实现 [图片上传中...(-572001-1587612890428-0)]

从官方文档来看,
sendline() 和 send() 唯一的区别就是在发送的字符串后面加上了回车换行符,这也使它们用在了不同的地方:
只需要发送字符就可以的话用send()
如果发送字符后还要回车的话,就用 sendline()
但是在调测过程中,WIN系统下命令输入后,child.before始终得不到预想中的结果。
经过逐步排查,发现在WIN系统下只能使用send() ,如果使用sendline() ,第一次交互没有问题,后续交互就开始问题。

WIN系统下child.before输出为b'byte型,做判断时要转为str型。具体可以参考最后面一篇讲编码类型的文章,讲的很详细。

例子1

send Username后,child.before一直到'Tac_Userna',child.after为‘me:’,child.buffer为空。

expect关键字assword:后,child.before回显一直到keyword之前,child.after为keyword,child.buffer为空。

例子2

下发command命令,child.before维持原来的不变,expect到keyword以后,child.before变为下发command命令后的设备回显。

参考文档

官方文档

探索Pexpect

Pexpect示例及使用Tips

Python Pexpect模块讲解

Pexpect模块使用说明

windows下使用plink实现全自动登陆ssh

Python3_字符编码

Ⅷ 如何Python3.4使用pexpect来实现SSH登陆

Pexpect 是 Don Libes 的 Expect 语言的一个 Python
实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect
的使用范围很广,可以用来实现与 ssh、ftp 、telnet
等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。

在shell里面用过pexpect的人,相信都会很熟悉这种工具,pexpect是expect的python的一个实现,利用python来操作某些交互式的自动化任务是非常方便的。

如何在linux下安装?
1,使用wget https://pypi.python.org/pypi?:action=show_md5&digest= 下载
2,使用tar -zxvf pexpect-3.3.tar.gz解压
3,使用python setup.py install进行安装
ok,上面的步骤,执行完成之后,我们就可以来写个demo测试一下了,另外注意兼容问题,散仙的python是3.4,所以要下载支持python3.4的pexpect,如果你的python版本是2.x那么就要下载2.x的pexpect来使用。
下面是散仙模拟SSH登陆一台机器并打印磁盘情况,然后退出的例子:
#!/usr/local/python3.4/bin/python3.4
import pexpect
ip="192.168.46.22"
name="root"
pwd="abc"
#发送命令执行交互
child=pexpect.spawn('ssh %s@%s' % ("root",ip) )
#
child.expect ('password:')
child.sendline(pwd)
child.expect('$')
child.sendline('df -h')
#发送命令
child.sendline("exit")
child.interact()
#关闭pexpect
child.close()

执行结果如下:
Last login: Wed Oct 22 18:35:08 2014 from 192.168.46.31
exit[root@ganglia ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_ganglia-lv_root 30G 3.6G 25G 13% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 485M 32M 428M 7% /boot
[root@ganglia ~]# exit
logout
Connection to 192.168.46.22 closed.
[root@master 2012]#
本文只是一个简单的例子,可能觉得没有必要使用python来完成,但当系统管理规模一旦大起来的话,使用python来自动化管理是非常轻松的一件事。

Ⅸ python 脚本中pexpect模块问题~

亲不清楚你为什么匹配两次y/n

我给你个例子说明expect的用法
例如我ssh连接一台服务器

连接之后会有提示,此时我们可以使用expect

ssh.expect('continueconnecting(yes/no)?')

之前的字符应该自动正则了
expect之后我们就可以根据提示输入要输入的信息
ssh.sendline('yes ')

哦shit我发现个问题你是不是应该试试crt.sendline('y ')

热点内容
微课源码 发布:2025-07-18 16:34:44 浏览:999
压缩长抱枕 发布:2025-07-18 16:13:38 浏览:504
如何使用wifi热点配置网络 发布:2025-07-18 16:06:25 浏览:969
android软键盘数字 发布:2025-07-18 16:03:18 浏览:611
三菱plc编程软件官网 发布:2025-07-18 15:59:59 浏览:437
gse源码 发布:2025-07-18 15:58:15 浏览:627
编译链c语言执行速度 发布:2025-07-18 15:52:51 浏览:555
在线编程课程 发布:2025-07-18 15:46:56 浏览:173
生兔子算法循环 发布:2025-07-18 15:44:32 浏览:48
背包规划算法 发布:2025-07-18 15:44:27 浏览:110