python批量更新服务器上的文件

本文介绍了一款用于简化服务器脚本升级过程的Python脚本。该脚本可以根据指定的模块名称,从配置文件中获取相应的服务器IP地址,并实现web应用的远程部署与Tomcat重启。此外,还提供了灵活的参数配置选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为公司业务经常需要升级全国服务器的一些脚本,每次都要手工来上传文件,然后再执行,非常烦琐。所以写了一个小脚本来批量执行,顺便炼炼手。

程序需求:
1、可以指定升级哪个模块,从配置文件中调出哪些省有此模块
2、指定升级web还是升级数据库

配置文件areamap.ini
[江苏电信]
abc = 172.16.0.1
def = 172.16.0.2


[江西电信]
abc = 172.16.2.1
def = 172.16.2.2


import os,sys
import ConfigParser

class UpDate:
def __init__(self,ModName):
self.modname = ModName
self.conf = "areamap.ini"

# 到到这个模块所有服务器的地区和IP地址
def getmodip(self):
conf=ConfigParser.ConfigParser()
conf.read(self.conf)
IP=[]
for section in conf.sections():
if self.modname in conf.options(section):
IP.append((section,conf.get(section,self.modname)))
return IP
# 取得模块与程序包的对应关系
def getwebfile(self):
ModMap={'abc':'abc.war','def':'def.war',}
return ModMap[self.modname]

# 重启tomcat
def retomcat(self,IP):
print 'Now restart tomcat:'
cmd = "ssh " + IP + " -C 'killall -9 java;sleep 10;tomcat/bin/startup.sh'"
print cmd
os.system(cmd)

if __name__ == "__main__":
if(len(sys.argv) < 3):
print 'Usage:./up.py modelname db/web sqlfilename'
sys.exit()
elif( sys.argv[2] == 'db' and len(sys.argv) != 4):
print 'Usage:./up.py modelname db sqlfilename'
sys.exit()


ModelName = sys.argv[1]
update = UpDate(ModName=ModelName)
IP = update.getmodip()

if(sys.argv[2] == 'web'):
for ip in IP:
File = update.getwebfile()
if(not os.path.isfile(File)):
print "The File: %s is not exsit" % File
sys.exit()
print "\n************"+ip[0]+"************\n"
update.copyfile(File,ip[1],'tomcat/webapps/')
update.retomcat(ip[1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值