python批量上传 服务器_python写的批量操作远程主机脚本(命令执行,上传、下载文件)...
最近在学习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写的批量操作远程主机脚本(命令执行,上传、下载文件)...相关推荐
- python批量上传执行脚本_python 写的批量操作远程主机脚本(命令执行,上传、下载文件)...
本帖最后由 Matthew0701 于 2011-4-28 21:45 编辑 最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工 ...
- python命令行下载文件_python写的批量操作远程主机脚本(命令执行,上传、下载文件)...
最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工作: 安装python 2.6.5: yum -y install readl ...
- python批量ping50台服务器_Python小技巧—批量ping的方法
在日常的工作中,我们通常会有去探测目标主机是否存活的应用场景,单个的服务器主机可以通过计算机自带的DOS命令来执行,但是业务的存在往往不是单个存在的,通常都是需要去探测C段的主机(同一个网段下的存活主 ...
- python批量上传 服务器_Python Tornado批量上传图片并显示功能
简介 Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的.2007年由4名Google前软件工程师一起创办了FriendFeed,旨在使用 ...
- python批量生成word报告_Python操作Word批量生成合同的实现示例
背景:大约有3K家商家需要重新确认信息并签订合同.合同是统一的Word版本.每个供应商需要修改合同内的金额部分.人工处理方式需要每个复制粘贴且金额要生成大写金额.基于重复工作可偷懒.用Python解救 ...
- python批量处理excel数据_Python批量处理Excel,真香(超实用!)
本文介绍了利用Python批量处理Excel文件的一种方法,超实用,超简单.轻松可实现,节省时间不只一点点.文章不长,功能超强. 上菜. 某一天,老板丢个我一个任务.需要将400多张表按照一定条件进行 ...
- python扫描端口脚本_python写的端口扫描脚本
今天看到群里哥们发了一个需求,如下: "如何批量检测一批主机的端口,是否存在,端口都是对外的",感觉不难,就用py写了个小脚本,有问题的地方,还望大家指出,谢谢! #!/usr/b ...
- python可以写脚本_Python写一个痒痒鼠脚本
之前电脑系统崩了,重装之后就直接安装Anaconda来使用Python语言(装的时候记得把添加路径勾上,不想装Anaconda可参考之前的Python环境搭建),咱们还是先用Sublime来写脚本吧. ...
- python批量导入网页信息_python批量导入数据进Elasticsearch的实例
ES在之前的博客已有介绍,提供很多接口,本文介绍如何使用python批量导入.ES官网上有较多说明文档,仔细研究并结合搜索引擎应该不难使用. 先给代码 #coding=utf-8 from datet ...
最新文章
- java ee空指针_Java EE 7是最终版本。 思想,见解和进一步的指针。
- Java注解全面解析
- oracle数据库物理结构包含,Oracle - 数据库物理结构
- 数列分块入门 7(LibreOj-6283)
- kali ip查询_UDP/IP硬件协议栈设计(一):缘起
- Swiper插件的基本使用方法和案例
- 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...
- iOS下JS和原生交互,函数互调
- 【Flutter】微信项目实战【04】发现界面搭建
- 《C语言程序设计》讲义
- 橘子娱乐完成华创资本千万美元B+轮融资
- win7系统如何恢复或重装IE8浏览器呢?
- Mysql学习之三. NLJ和BLN介绍
- 根据指定的经纬度查询半径为5km的地点
- 互联网家谱受到追捧,传统修谱方式面临淘汰,数字家谱:好用
- r语言ggplot2误差棒图快速指南
- python是哪一类型编程语言_什么是编程语言呢?编程语言有哪些种类呢?
- 点云语义分割:PointNet训练S3DIS数据集
- c语言字符型常量计算,c语言字符型常量和变量.doc
- H264编解码SPS、PPS参数说明
热门文章
- java发送邮件,带跳转链接地址(包含遇见的坑)
- 苹果iPhone屏幕时间密码忘记解不开?教你3种解决办法
- 每一个程序员都应该掌握一套命名的方法论
- c语言程序设计英汉词典设计,c语言(二)课程设计--电子英汉词典设计.doc
- 测试具有44个漏洞点的简单小靶场-SQL注入篇
- 济南企业办理ISO20000认证,需要的条件和资料
- opera android 7,Android版Opera Mini 7浏览器毕业 下一批入学的是谁?
- django 手机验证码获取
- ZCMU 1311: 数字整除
- 【PCB专题】怎么样将BMP图片导入Allegro中生成log