paswd_key = '.*assword.*'  匹配Password

ssh_newkey = '.*(yes/no).*' 匹配 Are you sure you want to continue connecting (yes/no)

  1. #!/usr/bin/python2.7
  2. import pexpect
  3. import os, sys, getpass
  4. def ssh_command(user, host, password, command):
  5. ssh_newkey = '.*(yes/no).*'
  6. passwd_key = '.*assword.*'
  7. child = pexpect.spawn('ssh -l %s %s %s' %(user, host, command))
  8. child.logfile = sys.stdout
  9. i = child.expect([pexpect.TIMEOUT, ssh_newkey, passwd_key])
  10. if i == 0: #timeout
  11. print child.before
  12. print "Error time out"
  13. print child.after
  14. return None
  15. if i ==1 :
  16. child.sendline('yes')
  17. i = child.expect([pexpect.TIMEOUT, passwd_key])
  18. if i == 0:
  19. print child.before
  20. print 'time out ERROR'
  21. print child.after
  22. return None
  23. child.sendline(password)
  24. return child
  25. def scp2(ip, user, passwd, dst_path, filename):
  26. passwd_key = '.*assword.*'
  27. if os.path.isdir(filename):
  28. cmdline = 'scp -r %s %s@%s:%s' % (filename, user, ip, dst_path)
  29. else:
  30. cmdline = 'scp %s %s@%s:%s' % (filename, user, ip, dst_path)
  31. try:
  32. child = pexpect.spawn(cmdline)
  33. child.expect(passwd_key)
  34. child.sendline(passwd)
  35. child.expect(pexpect.EOF)
  36. #child.interact()
  37. #child.read()
  38. #child.expect('$')
  39. print "uploading"
  40. except:
  41. print "upload faild!"
  42. def main():
  43. host = raw_input('Hostname:')
  44. user = raw_input('User:')
  45. password = getpass.getpass()
  46. command = raw_input('Command:')
  47. child = ssh_command(user, host, password, command)
  48. child.expect(pexpect.EOF)
  49. print child.before
  50. if __name__ == "__main__":
  51. main()

Python pexpec 解决scp ssh的更多相关文章

  1. 解决 scp 和rsync 同步失败【rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2]】

    解决 scp 和rsync 同步失败 报错信息截图: 解决问题的步骤: 1.检查对方的scp和rsync 是否能使用. rsync 在使用的时候,需要客户端和服务端都有rsync工具.scp 和 rs ...

  2. 深入super,看Python如何解决钻石继承难题 【转】

    原文地址 http://www.cnblogs.com/testview/p/4651198.html 1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通 ...

  3. paip.python错误解决24

    paip.python错误解决 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...

  4. paip.python错误解决23

    paip.python错误解决 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...

  5. 无需输入密码的scp/ssh/rsync操作方法

    一般使用scp/ssh/rsync传输文件时,都需要输入密码.下面是免密码传输文件的方法. 假设要在两台主机之间传送文件,host_src & host_dst.host_src是文件源地址所 ...

  6. 深入super,看Python如何解决钻石继承难题

    1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object): def __init_ ...

  7. (转)python通过paramiko实现,ssh功能

    python通过paramiko实现,ssh功能 1 import paramiko 2 3 ssh =paramiko.SSHClient()#创建一个SSH连接对象 4 ssh.set_missi ...

  8. shell脚本中解决SCP命令需要输入密码的问题

    使用密钥文件.       这里假设主机A(192.168.100.3)用来获到主机B(192.168.100.4)的文件.   在主机A上执行如下命令来生成配对密钥: ssh-keygen -t r ...

  9. (转载)深入super,看Python如何解决钻石继承难题

    1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object): def __init_ ...

随机推荐

  1. [ionic开源项目教程] - 第4讲 通Service层获取数据列表

    第4讲:通Service层获取数据列表 上一讲中页面的基本架构已完成,这一讲介绍如何通过service层从服务器请求数据,在通过controller层为载体,显示到视图层. 1.在services.j ...

  2. Ref相关的名词解释

    NV (NOT-VOLATILE),即非易失性,断电不会丢失的存储信息,包括生产信息.客户信息.产品信息等等. 它们都保存在不同(FLASH)分区,并根据不同的分区提供不同的接口.数据结构和管理机制. ...

  3. 【转】ubuntu下安装eclipse以及配置python编译环境

    原文网址:http://blog.csdn.net/wangpengwei2/article/details/17580589 一.安装eclipse 1.从http://www.eclipse.or ...

  4. MBTiles地图瓦片管理工具

    采用C#+GMap.NET+MBTiles数据库来实现. 具有以下功能: 1)  支持单个文件追加到mbtiles数据库. 2)  支持批量导入Google切片组织的地图瓦片. 3)  支持直接对MB ...

  5. 有关loading share object file libjvm.so: xxxxx 的那些问题

    今天在跑一个有关postgresql产品的测试,要测试postgresql的有关Mirroring Controller的功能. 在执行mc_ctl命令的时候,报错:error while loadi ...

  6. 44、自定义仿IOS对话框

    private Dialog myDialog = null; private void ExitLogin() { View view = LayoutInflater.from(MainActiv ...

  7. android edittext不弹出软键盘

    方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如:< ...

  8. 成功BOSS的六大秘诀

    1.信念力 一个没有坚定信念的人,是不可能成为伟大企业家的.如果你认为自己行,你就一定行:如果你都认为自己不行了,那你就注定不行.在成功这条道路上,要勇敢地自我肯定和鼓励,这样才能带来巨大的创造力并最 ...

  9. Linux下安装loadrunner步骤及遇到的问题

    Linux下实现压力测试,只能在Linux下安装加压器---load-generator,然后通过本地录制脚本,通过loadrunner controller 的Scenario-->Load ...

  10. 性能测试指标&说明 [解释的灰常清楚哦!!]

    详见: 浅谈软件性能测试中关键指标的监控与分析 http://www.51testing.com/html/18/n-3549018.html