最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正

准备工作:

安装python 2.6.5:

yum -y install readline*

tar xf Python-2.6.5.tar.bz2

cd Python-2.6.5

将目录下Modules/Setup.dist文件中"readline readline.c -lreadline -ltermcap"行前的注释去掉

编译安装:

./configure --enable-shared

make -j8 && make install

安装setuptools

tar xf setuptools-0.6c11.tar.gz

cd setuptools-0.6c11

python setup.py install

安装fabric

执行安装时,软件会自动从网上查找依赖的安装包并进行安装

tar xf fabric-0.9rc2.tar.gz

cd goosemo-fabric-1eacbf2

python setup.py install

############################################################################

pyssh脚本:#!/usr/bin/env python

# -*- coding: utf-8 -*-

#####################################################

# Author: mayulin – mayulin@cy2009.com

# Last modified: 2011-04-28 12:27

# Filename: pssh.py

#####################################################

from fabric.api import env,run,put,get

from os import path

from re import findall

from sys import argv

from fabric.context_managers import hide

from time import sleep

USER='root'

HOST,IP_LIST=[],[]

PORT='22'

PRI_KEY,PASSWORD,CMD,uSRC,uDST,dSRC,dDST='','','','','','',''

timeout=1

for i in range(1,len(argv)+1):

if argv[i-1] == '-h' or len(argv)==1:

print """

USAGE:

-u [user]       Use this argument to specify the user,default is 'root'

-H [host]       The host that you want to connect

-f [file]       The file content multiple ip address you want to connect

-P [port]       The ssh port,default is 22

-p [pwd|file]   You can specify password or a priviate key file to connect the host

-c [command]    The command you want the host(s) to run

-U [src,dst]    The local file that you want to upload to the remote host(s)

-D [src,dst]    The remote file that you want to download to the local host

-t [timeout]    The program running timeout,default is 1(s)

-h              Print this help screen

"""

if argv[i-1] == '-u':

USER=argv[i]

env.user='%s'%(USER)

else:

env.user='%s'%(USER)

if argv[i-1] == '-H':

arg=findall('(\d+\.\d+\.\d+\.\d+|\s+\.{3,4})',argv[i])

for j in arg:

if type(j).__name__ !='NoneType':

HOST.append(j)

else:

print 'The HostIP input error'

if argv[i-1] == '-P':

PORT=argv[i]

if argv[i-1] == '-f':

if path.isfile('%s'%(argv[i])) == True:

IP_LIST=open('%s'%(argv[i]),'r').readlines()

if argv[i-1] == '-p':

if path.isfile(argv[i]) == True:

PRI_KEY=argv[i]

env.key_filename='%s'%(PRI_KEY)

else:

PASSWORD=argv[i]

env.password='%s'%(PASSWORD)

if argv[i-1] == '-c':

CMD=argv[i]

if argv[i-1]=='-t':

timeout=argv[i]

SLP='sleep %s'%(timeout)

if argv[i-1] == '-U':

x=src=argv[i].split(',')

uSRC=x[0]

uDST=x[1]

if argv[i-1] == '-D':

y=src=argv[i].split(',')

dSRC=y[0]

dDST=y[1]

else:

IP_PORT=[]

if len(IP_LIST)!=0:

for k in IP_LIST:

IP_PORT.append(k.strip()+':'+PORT)

if len(HOST)!=0:

for k in HOST:

IP_PORT.append(k.strip()+':'+PORT)

if CMD != '':

def command():

with hide('running'):

run("%s;%s" %(CMD,SLP))

for ip in IP_PORT:

env.host_string=ip

print "Execute command : \"%s\" at Host : %s" %(CMD,ip.split(':')[0])

print "-------------------------------------------------"

command()

print "-------------------------------------------------"

if uSRC and uDST !='':

def upload():

with hide('running'):

put("%s" %(uSRC),"%s" %(uDST))

for ip in IP_PORT:

env.host_string=ip

print "Upload local file : \"%s\" to Host : %s \"%s\"" %(uSRC,ip.split(':')[0],uDST)

print "-------------------------------------------------"

upload()

print "-------------------------------------------------"

if dSRC and dDST !='':

def download():

with hide('running'):

get("%s" %(dSRC),"%s" %(dDST))

for ip in IP_PORT:

env.host_string=ip

print "Download remote file : \"%s\" from Host : %s to local \"%s\"" %(dSRC,ip.split(':')[0],dDST)

print "-------------------------------------------------"

download()

print "-------------------------------------------------"

###########################################################################################

脚本执行效果:

显示帮助:

在多个远程主机上执行shell命令:

将远程主机上的文件下载到本地目录:

将本地文件上传到多个远程主机上

python批量上传 服务器_python写的批量操作远程主机脚本(命令执行,上传、下载文件)...相关推荐

  1. python批量上传执行脚本_python 写的批量操作远程主机脚本(命令执行,上传、下载文件)...

    本帖最后由 Matthew0701 于 2011-4-28 21:45 编辑 最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工 ...

  2. python命令行下载文件_python写的批量操作远程主机脚本(命令执行,上传、下载文件)...

    最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工作: 安装python 2.6.5: yum -y install readl ...

  3. python批量ping50台服务器_Python小技巧—批量ping的方法

    在日常的工作中,我们通常会有去探测目标主机是否存活的应用场景,单个的服务器主机可以通过计算机自带的DOS命令来执行,但是业务的存在往往不是单个存在的,通常都是需要去探测C段的主机(同一个网段下的存活主 ...

  4. python批量上传 服务器_Python Tornado批量上传图片并显示功能

    简介 Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的.2007年由4名Google前软件工程师一起创办了FriendFeed,旨在使用 ...

  5. python批量生成word报告_Python操作Word批量生成合同的实现示例

    背景:大约有3K家商家需要重新确认信息并签订合同.合同是统一的Word版本.每个供应商需要修改合同内的金额部分.人工处理方式需要每个复制粘贴且金额要生成大写金额.基于重复工作可偷懒.用Python解救 ...

  6. python批量处理excel数据_Python批量处理Excel,真香(超实用!)

    本文介绍了利用Python批量处理Excel文件的一种方法,超实用,超简单.轻松可实现,节省时间不只一点点.文章不长,功能超强. 上菜. 某一天,老板丢个我一个任务.需要将400多张表按照一定条件进行 ...

  7. python扫描端口脚本_python写的端口扫描脚本

    今天看到群里哥们发了一个需求,如下: "如何批量检测一批主机的端口,是否存在,端口都是对外的",感觉不难,就用py写了个小脚本,有问题的地方,还望大家指出,谢谢! #!/usr/b ...

  8. python可以写脚本_Python写一个痒痒鼠脚本

    之前电脑系统崩了,重装之后就直接安装Anaconda来使用Python语言(装的时候记得把添加路径勾上,不想装Anaconda可参考之前的Python环境搭建),咱们还是先用Sublime来写脚本吧. ...

  9. python批量导入网页信息_python批量导入数据进Elasticsearch的实例

    ES在之前的博客已有介绍,提供很多接口,本文介绍如何使用python批量导入.ES官网上有较多说明文档,仔细研究并结合搜索引擎应该不难使用. 先给代码 #coding=utf-8 from datet ...

最新文章

  1. java ee空指针_Java EE 7是最终版本。 思想,见解和进一步的指针。
  2. Java注解全面解析
  3. oracle数据库物理结构包含,Oracle - 数据库物理结构
  4. 数列分块入门 7(LibreOj-6283)
  5. kali ip查询_UDP/IP硬件协议栈设计(一):缘起
  6. Swiper插件的基本使用方法和案例
  7. 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...
  8. iOS下JS和原生交互,函数互调
  9. 【Flutter】微信项目实战【04】发现界面搭建
  10. 《C语言程序设计》讲义
  11. 橘子娱乐完成华创资本千万美元B+轮融资
  12. win7系统如何恢复或重装IE8浏览器呢?
  13. Mysql学习之三. NLJ和BLN介绍
  14. 根据指定的经纬度查询半径为5km的地点
  15. 互联网家谱受到追捧,传统修谱方式面临淘汰,数字家谱:好用
  16. r语言ggplot2误差棒图快速指南
  17. python是哪一类型编程语言_什么是编程语言呢?编程语言有哪些种类呢?
  18. 点云语义分割:PointNet训练S3DIS数据集
  19. c语言字符型常量计算,c语言字符型常量和变量.doc
  20. H264编解码SPS、PPS参数说明

热门文章

  1. java发送邮件,带跳转链接地址(包含遇见的坑)
  2. 苹果iPhone屏幕时间密码忘记解不开?教你3种解决办法
  3. 每一个程序员都应该掌握一套命名的方法论
  4. c语言程序设计英汉词典设计,c语言(二)课程设计--电子英汉词典设计.doc
  5. 测试具有44个漏洞点的简单小靶场-SQL注入篇
  6. 济南企业办理ISO20000认证,需要的条件和资料
  7. opera android 7,Android版Opera Mini 7浏览器毕业 下一批入学的是谁?
  8. django 手机验证码获取
  9. ZCMU 1311: 数字整除
  10. 【PCB专题】怎么样将BMP图片导入Allegro中生成log