#!/usr/bin/env python
# -*- coding: utf-8 -*-

#wangxiaofei

#awcloud自动化测试

import time,os
import threading
import sys

threads = []

username = 'root'
passwd = 'www.awcloud.com'
ssh_ip = ['10.11.11.4',
'10.11.11.5',
'10.11.11.6',
'10.11.11.7'
]

try:
     import pexpect
except ImportError:
     print 'Can not found pexpect module,Now install it......'
     os.system('yum install pexpect -y')
     time.sleep(3)
     check_pexpect=os.popen('rpm -qa | grep pexpect')
     if 'pexpect' in check_pexpect.read():
         print 'check pexpect module is exists,going on...'
     else:
         print 'check pexpect module is not exists,exit...'
         sys.exit()
else:
    import pexpect

def scp_file():
    i=0
    for i in range(len(ssh_ip)):
        try:
           scp_command=pexpect.spawn('scp '+scp_filename+' root@'+ssh_ip[i]+':/root/')
           expect_result = scp_command.expect([r'assword:',r'yes/no'],timeout=30)
           if expect_result == 0:
               scp_command.sendline(passwd)

#这句话真的很神奇,如果不加这句话,程序会执行,但是不执行copy,请各路神人解释

scp_command.read()
           elif expect_result == 1:
               scp_command.sendline('yes')
               scp_command.expect('assword:',timeout=30)
               scp_command.sendline(passwd)
              #don't delete this code,if your do then,the program will be faill.
              scp_command.read()
              #important
          else:
              print 'Unknow Result......'
       except pexpect.EOF:
              print 'Uploading Fail....'
              print pexpect.EOF
       except pexpect.TIMEOUR:
              print 'Uploading time out.....'
    time.sleep(2)

if '__name__' == '__main__':

scp_file()

[python]使用pexpect模块进行批量scp的更多相关文章

  1. python之pexpect模块

    最近在看<Python自动化运维技术与最佳实战>这本书,学到了一个运维中用到的模块:pexpect 下面是其定义: Pexpect 是一个用来启动子程序并对其进行自动控制的 Python ...

  2. python的pexpect模块

    Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块. P ...

  3. 8.python 系统批量运维管理器之pexpect模块

    小插曲 前几节讲了paramiko模块,但是pexpect模块的功能几乎跟paramiko一样,先来分析一下: 1.各自介绍 pexpect是一个通过启动子程序,使用正则表达式对程序输出做出特定响应, ...

  4. Python中的Pexpect模块的简单使用

    Pexpect 是一个用来启动子程序并对其进行自动控制的 Python 模块. Pexpect 可以用来和像 ssh.ftp.passwd.telnet 等命令行程序进行自动交互.以下所有代码都是在K ...

  5. python的pexpect详解

    Pexpect 是一个用来启动子程序并对其进行自动控制的纯 Python 模块. Pexpect 可以用来和像 ssh.ftp.passwd.telnet 等命令行程序进行自动交互.继第一部分< ...

  6. python的库有多少个?python有多少个模块?

    这里列举了大概500个左右的库: !   Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...

  7. Pexpect模块的安装

    Pexpect模块的安装 下载地址:https://pypi.python.org/pypi/pexpect/ 解压后在目录下运行:python ./setup.py install (必须是root ...

  8. 正则表达式与Python中re模块的使用

    正则表达式与Python中re模块的使用 最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块. 本文总结一下正则表达式与re模块的基础与使用. 另外,给大家介绍一个在线测试正则 ...

  9. python之常用模块4

    pyinotify模块 pip3 install pyinotify pyinotify提供的事件: 事件标志 事件含义 IN_ACCESS 被监控项目或者被监控目录中的文件被访问,比如一个文件被读取 ...

随机推荐

  1. ExtJs布局大全

    1.Fit 布局 在Fit 布局中,子元素将自动填满整个父容器.注意:在fit 布局下,对其子元素设置宽度是无效的.如果在fit 布局中放置了多个组件,则只会显示第一个子元素.在Fit 布局中,子元素 ...

  2. Netty那点事

    一.Netty是什么 Netty,无论新手还是老手,都知道它是一个“网络通讯框架”. 所谓框架,基本上都是一个作用:基于底层API,提供更便捷的编程模型. 那么”通讯框架”到底做了什么事情呢?回答这个 ...

  3. 解决Hibernate Write operations are not allowed in read-only mode的方法

    错误信息: org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed i ...

  4. 《c程序设计语言》读书笔记--首次输入不能是空符;最多10个字符

    #include <stdio.h> #define Num 10 int main() { int wor = 0; int arr[Num] = {0}; int c,count = ...

  5. leetcode:Search a 2D Matrix(数组,二分查找)

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  6. D3D中深度测试和Alpha混合的关系

    我在学习D3D的深度测试和Alpha混合的时候,有一些遗憾.书上提供的例子里说一定要先渲染不透明物体,再渲染透明物体,对渲染状态的设置也有特殊要求.我看的很晕.自己查图形学的书,上网找资料,结果还是糊 ...

  7. dotnet il editor 调试 iis 程序

    没有C#源代码,IL级别调试.听说windbg也可以,不过windbg有些难.另外il其实一般写C#程序也不熟,不过我目的只是找出异常点,到客户一般不发pdb文件,出去也是release版本,出异常( ...

  8. R语言iris数据集的层次聚类

    data=iris[,-5]dist.e=dist(data,method='euclidean')model1=hclust(dist.e,method='ward') #分3类result=cut ...

  9. Trianglify – 五彩缤纷的 SVG 背景图案

    Trianglify 是一个能够生成五颜六色的三角形图案的 JavaScript 库,可以用来作为 SVG 图像和 CSS 背景.它的灵感来自于 Btmills 的 Geopattern,并使用 d3 ...

  10. IOS开发之不同版本适配问题2(#ifdef __IPHONE_7_0)(转载)

    继续说说ios不同版本之间的适配 先说一个东西:在xcode当中有一个东西叫targets,苹果的官方文档是这样说的: A target specifies a product to build an ...