python pexpect安装问题

安装

https://pypi.python.org/pypi/pexpect 
下载pexpect 4.0.1 
放到ubuntu中解压 
tar -xzvf pexpect 4.0.1.tar.gz 
到达相应路径 
python ./setup.py install 
即可安装 
安装时候报了个错

SyntaxError: ('invalid syntax', ('/usr/local/lib/python2.7/dist-packages/pexpect/async.py', 16, 30, '    transport, pw = yield from asyncio.get_event_loop()\\\n'))

查了查没结果 
直接进入python环境import pexpect试试 
发现有问题

>>> import pexpect
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pexpect/__init__.py", line 75, in <module>
    from .pty_spawn import spawn, spawnu
  File "pexpect/pty_spawn.py", line 11, in <module>
    import ptyprocess
ImportError: No module named ptyprocess

少了个模块, 
https://pypi.python.org/pypi/ptyprocess#downloads 
下了个ptyprocess 
一样解压,安装, 
之后import pexpect没问题,可以用了。

或者用pip安装 
安装pip

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv 

然后安装pexpect 
sudo pip install pexpect

pexpect and SSH

可以用pexpect来进行ssh访问 
先给脚本

import pexpect

def sudo(ssh_cmd, passwd):
    message="error"
    ret = -1
    ssh = pexpect.spawn(ssh_cmd) 
    try:
        i = ssh.expect(['continue connecting (yes/no)?', 'password:'], timeout=5)
        ssh.sendline('yes\n')       
        i = ssh.expect(['password:'],timeout=5)
        ssh.sendline(passwd)
        #ssh.expect(pexpect.EOF)
        #print ssh.before
        #print ssh.after
        r = ssh.read()
        message = r 
        ret = 0
    except pexpect.EOF:
        message = "" 
        ret = 0 
    except pexpect.TIMEOUT:
        message = "timeout" 
        ret = -2
    finally : 
        ssh.close( ) 
    return ret, message     

ssh_cmd="ssh X.X.X.X\n ifconfig"
passwd="XXXX"
ret, message=sudo(ssh_cmd, passwd)
print ret,message

很简单的一个小脚本,通过IP和密码SSH远程登录X.X.X.X机器,查看其网卡配置。 
这里

#导入模块
import pexpect
# 为 ssh 命令生成一个 spawn 类的子程序对象.
ssh = pexpect.spawn(ssh_cmd) 
#获取输出,为前者则i=0,后者则i=1
i = ssh.expect(['continue connecting (yes/no)?', 'password:'], timeout=5)
#输入
ssh.sendline(passwd)
#获取执行命令的输出
r = ssh.read()

输出为

eth0      BLABLA

lo        BLABLA
--------------------- 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值