免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4282 | 回复: 5
打印 上一主题 下一主题

pexpect模块scp失败,请各位大侠帮忙看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-23 12:27 |只看该作者 |倒序浏览
各位高手:
      我是python菜鸟,想利用python的pexpect模块scp文件,代码如下:

import pexpect

scp = pexpect.spawn('scp cpu.py root@192.168.10.117:/root')
scp.expect('password: ')
scp.sendline('123456')
print 'ok'


ok可以输出,但是cpu.py没有拷过去。请各位帮忙看看,多谢!

论坛徽章:
0
2 [报告]
发表于 2012-07-25 21:49 |只看该作者
打开pexpect的调试功能,看看有什么回显内容

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
3 [报告]
发表于 2012-07-27 12:11 |只看该作者
password输玩以后还要输个回车
我以前也卡过

论坛徽章:
0
4 [报告]
发表于 2012-07-27 16:27 |只看该作者
请问怎么打开pexpect的调试功能?
我把scp.sendline('123456')改成scp.sendline('123456\n')还是不行
但是在scp.sendline('123456')下面加了一行scp.read(),就scp成功了。
不明白原理,请高手解答。

论坛徽章:
0
5 [报告]
发表于 2012-07-27 21:57 |只看该作者
本帖最后由 nmweizi 于 2012-07-27 21:58 编辑

每执行一步后,用这个去判断。
i = self.child.expect([pexpect.TIMEOUT, SSH_NEWKEY, self.COMMAND_PROMPT_t, self.__get_PASSWORD_PROMPT__(),pexpect.EOF])
返回不同的结果,表示不同的含义。
比如
                if i == 0: # Timeout
                    self.__error_write__()
                    continue
                if i == 1: # In this case SSH does not have the public key cached.
                    self.child.sendline ('yes')
                if i==3:
                    self.child.sendline ('password')
                if  i==2:   命令行提示
                    self.child.sendline ('command')
等等  

论坛徽章:
0
6 [报告]
发表于 2012-07-30 10:56 |只看该作者
大致意思明白了,往程序里面写有些难度,请高手详解
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP