[python]使用pexpect模块进行批量scp

#!/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+‘ [email protected]‘+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()

时间: 2024-08-22 17:53:25

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

Python 安装pexpect模块

安装Python 下载pexpect模块:https://pypi.python.org/pypi/pexpect/#downloads 解压后在目录下运行:python ./setup.py install (必须是root权限) 如果没有使用root权限,你只需要把lib的路径放入sys.path,这样便可以使用pexpect import syssys.path.append('pexpect-4.2.1/build/lib') 确认是否安装成功 >>>import pexpect

通python的pexpect模块获取集群信息

通过pexpect获取集群主机信息 import pexpect ip = 'xx' cmd = 'xx' ssh = pexpect.spawn('ssh %s  %s'  %(ip,cmd)) r = ssh.read() print r

python linux交互模块(paramiko、fabric与pexpect)

转载自: http://blog.csdn.net/alibert/article/details/54375276 paramiko paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 默认python没有,需要手动安装:pip install paramiko 如安装失败,可以尝试yum安装:yum install python-paramiko 18.1.1 SSH密码认证远程执行命令 1 2 3 4 5 6 7 8 9 10 11 1

python的os模块批量获取目标路径下的文件名

目前在做一个项目开发与变更专项稽核,但是所抽取的目标项目,样本所附电子版文件上千个,需要判断文档完整性,就需要所有文档名清单. python的os模块好像是对这块比较擅长,就去翻了下文档,试着写了,效果还可以. 1 import os 2 3 #通过文件获取目标路径 4 file2=open(r'd:\dirname.txt','r') 5 a=file2.readlines() 6 file2.close() 7 8 #遍历目标路径下文件路径及名字,并写入新文件abc.txt 9 file1=

Python的OS模块批量修改文件名

大量文件名需要进行有序整理时,可以使用Python的OS模块进行文件批量重命名,脚本如下: import os path = 'D:\PycharmProjects\download_photos\down_photos' #文件路径 count = 1 filelist = os.listdir(path) #该文件夹下所有文件 def rename(): global count for files in filelist: #遍历文件 Olddir = os.path.join(path,

pexpect练习实例--批量执行远程服务器上的指定脚本

经过几天的学习,pexpect模块对于linux下运维脚本编写属实有用,下面写个脚本检验下学习效果. #!/usr/bin/env python #coding=utf-8 #远程执行服务器上的脚本 import sys, time, os, multiprocessing try: import pexpect except ImportError: print """ You must install pexpect module """ s

python的自动化模块安装

以前所用的操作系统是centos,如今用的操作系统是debian,所以开始适应,转变. debian安装之后发现默认没有安装ssh,所以先安装ssh服务并启动 apt-get install ssh /etc/init.d/ssh start 接下来安装pexpect,paramiko模块. 若要安装上面的模块,先安装setuptools模块. 安装setuptools模块 wget  tar xf  setuptools-3.3.tar.gz cd setuptools-3.3 python 

Pexpect:系统批量运维管理器!!!

项目背景: 为了更好的实现我们企业的自动化运维,我们需要对pexpect模块有清晰的了解和使用能力. 实验环境: vmware workstation 11 centos6.5的系统下 pexpect服务器:192.168.0.26 远程主机:192.168.0.14 SecureCRT (ssh远程连接软件) 软件介绍 Pexpect 是一个用来启动子程序并对其进行自动控制的纯 Python 模块. Pexpect 可以用来和像 ssh.ftp.passwd.telnet 等命令行程序进行自动

Python之paramiko模块和SQL连接API

堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.con