`
ycsk
  • 浏览: 154754 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

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

程序需求:
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])	
1
0
分享到:
评论
2 楼 ycsk 2008-04-14  
因为war包是直接拷到对应目录下的,经常发现tomcat缓存导致更新后的war包,页面访问未更新,修改了程序:
	def retomcat(self,IP):
		print 'Now restart tomcat:'
		cmd = "ssh " + IP + " -C tomcat/bin/startup.sh'"
		print cmd
		os.system(cmd)
	
	def rmtomcat(self,IP):
		print 'Now remove tomcat webapps:'
		cmd = "ssh " + IP + " -C 'killall -9 java;sleep 10;rm -rf tomcat/webapps/" 
+ self.modname +"'"
		print cmd
		os.system(cmd)
1 楼 ycsk 2008-04-14  
今天在使用此脚本升级发现,在areamap.ini里添加的一个选项怎么也获得不了它的IP.最终发现原来
		for section in conf.sections():
			if self.modname in conf.options(section):
				IP.append((section,conf.get(section,self.modname)))
中conf.options()获得的选项名称都是小写,而我在areamap中是大写的.后来把此段代码修改为:
		for section in conf.sections():
			if self.modname.lower() in conf.options(section):
				IP.append((section,conf.get(section,self.modname)))
最终测试成功

相关推荐

    python批量巡检操作系统

    总结来说,这个Python批量巡检操作系统方案结合了Python的自动化能力、Shell命令的系统操作、数据收集与处理以及文件的读写,实现了跨多台主机的高效巡检,将结果整理成易于分析的Excel报告,对于IT运维人员来说,...

    利用Python如何批量更新服务器文件

    在本文中,我们将深入探讨如何使用Python通过paramiko库批量更新服务器文件。Paramiko是一个用于进行SSHv2协议编程的Python库,它提供了客户端和服务器端的实现,使得我们可以远程控制服务器,执行命令,以及传输...

    python多线程批量访问url脚本

    本项目中的"python多线程批量访问url脚本"正是基于这个理念设计的。 该脚本采用了第三方库`grequests`,它是`requests`库的一个并行版本,能够支持异步的HTTP请求。`requests`库是Python中广泛使用的HTTP客户端,而...

    Python自动化,实现cad批量出图

    "Python自动化,实现cad批量出图"这个主题聚焦于利用Python进行计算机辅助设计(CAD)文件的批量处理,以提高工作效率。CAD软件通常用于工程、建筑和产品设计等领域,而批量出图则意味着生成多份图纸,这在大型项目...

    Python 批量巡检服务器脚本

    在这些服务器上执行一系列命令,以收集服务器的详细信息,如IP地址、主机名、硬件配置、系统信息等。 将收集到的信息解析并整理。 使用多线程技术并行处理多个服务器,提高执行效率。 将整理好的信息写入Excel文件中...

    python-ssh-conf.rar(python批量配置交换机,路由器,服务器)

    Python SSH Conf是一个基于Python编写的工具,用于批量配置支持SSH(Secure Shell)登录的网络设备,如交换机、路由器和服务器。它简化了网络管理员的工作,通过自动化的方式将配置模板应用到多台设备上,提高了工作...

    批量上传文件及执行命令脚本——ssh_batch_trans

    注: 该脚本需要调用的模块为:paramiko, sys, datetime, threading, queue, getopt ... 批量传送文件: -S "IP列表" -L "本地文件路径" -R "远程文件路径" 错误日志文件:$PWD/ssh_errors.log

    python服务器资源、服务巡检脚本 输出到execl标红

    标题中的“python服务器资源、服务巡检脚本 输出到execl标红”表明这是一个使用Python编写的自动化脚本,它的主要功能是对服务器的资源使用情况和服务状态进行定期检查,并将检查结果导出到Excel文件中,其中存在...

    python 实现svn文件下载

    python 实现svn的代码下载,解决了请求认证,字符编码,地址长度问题。非常不错的例子。

    python实现批量修改服务器密码的方法

    总而言之,Python实现的批量修改服务器密码的方法,通过自动化脚本极大地提高了效率和安全性,减少了人工操作中的风险和疏漏。这种方法适用于那些有着大量服务器需要管理的环境,尤其对于数据中心、云计算平台或大型...

    Python-Python实现跨平台批量运维小神器

    3. **批量操作**:在Python中,通过循环结构和条件判断,可以轻松实现对多台服务器或多个文件的批量处理。例如,可以使用`for`循环遍历服务器列表,然后通过`paramiko`库建立SSH连接,执行远程命令。 4. **脚本编写...

    python批量图片下载器(可下载任意种类的图片)

    Python批量图片下载器是一种利用Python编程语言开发的工具,它能够根据用户提供的关键词在网络上自动搜索并下载相关的图片。这个程序的出现,极大地便利了需要大量图片资源的设计师、研究人员或是内容创作者,他们...

    基于python轻松实现批量ssh工具管理多台linux服务器.docx

    本文档旨在介绍一种利用Python编写的工具——`JSSH`,该工具能够帮助用户轻松地管理多台Linux服务器,实现批量的SSH连接、命令执行以及文件上传与下载等功能。对于需要频繁管理大量Linux服务器的系统管理员来说,`...

    python实现批量修改服务器密码的方法 开发技术.zip

    在压缩包内的"python实现批量修改服务器密码的方法 开发技术.pdf"文件中,可能包含了更详细的代码示例和解释,以及可能遇到的问题和解决方案。"1"和"2"可能是其他相关文档或代码片段,建议结合这些材料进一步学习和...

    python爬虫项目——自动批量抓取m3u8网页视频

    Python爬虫技术在IT行业中广泛应用于数据挖掘和自动化任务,特别是在网络视频资源的获取上。本项目专注于自动批量抓取m3u8网页视频,这是一个非常实用的技能,特别是对于那些需要收集网络视频数据的人来说。m3u8是一...

    python 自动批量打开网页的示例

    综上所述,通过上述代码示例我们可以了解到如何利用Python的`webbrowser`模块实现网页的批量打开,这对于需要频繁访问多个网址的工作场景来说是非常实用且高效的解决方案。此外,还可以通过增加额外的功能来进一步...

    源码_python登录_python_QQ批量登录_账号登录_批量登录_

    总的来说,这个Python批量登录QQ的项目涵盖了网络请求、数据加密、HTML解析、账号管理以及并发执行等多个核心Python技能。通过学习和实践这个项目,开发者不仅可以提升Python编程能力,还能深入了解网络应用的交互...

    python编写的用于服务器之前文件复制传输的接口

    在服务器文件复制场景中,Python可以提供方便的API和库,如`shutil`模块用于文件和文件夹的复制,`os`模块用于操作系统接口,以及`paramiko`库用于SSH(Secure SHell)连接,实现安全的远程文件传输。 Linux文件...

    python连接服务器/交换机可视化工具

    本文将深入探讨如何使用Python实现服务器和交换机的可视化连接工具,以及批量执行命令的功能。 首先,Python提供了多种库来帮助我们实现这些功能。例如,`paramiko`库是一个流行的SSH(Secure SHell)客户端,它...

Global site tag (gtag.js) - Google Analytics