@利用python脚本实现windows上传部署tomcat
利用python脚本实现windows上传部署tomcat
第一次记录,主要是利用一个python脚本 从windows复制文件上传 然后重启tomcat
主要用到了paramiko os 两个库
文件上传模块
不多说直接上代码
首先拿到文件在windows的文件 然后遍历该文件 取到相对路径 替换为Linux服务器上的地址
覆盖文件
def upload(hosId,port):
try:
t = paramiko.Transport((hosId, port))
t.connect(username='root', password='123456')
sftp = paramiko.SFTPClient.from_transport(t)
print('开始上传文件%s ' % datetime.datetime.now())
try:
for root,dirs,files in os.walk(winStr+'\\***'):
for file in files:
abs_path = os.path.join(root,file)
real_path = abs_path.split(winStr)[1]
print(real_path.replace('\\','/'))
print('上传文件路径为')
print('/opt/xvdb/tomcat_ite/webapps'+real_path)
sftp.put(os.path.join(root,file), '/opt/xvdb/tomcat_ite/webapps'+real_path.replace('\\','/'))
except Exception as e:
print('失败 %s ' % datetime.datetime.now())
print('文件上传成功 %s ' % datetime.datetime.now())
t.close()
except Exception as e:
print(repr(e))
重启模块
利用SSHClient 模块 可以重启服务器上的tomcat
需要注意的一点是 执行重启命令时 需要先读取 配置文件source /etc/profile
不然重启命令报错
stdin, stdout, stderr = ssh.exec_command('source /etc/profile;/opt/xvdb/tomcat_ite/bin/startup.sh')
def restart(hosId,port):
#开始重启服务器
4 #创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname= hosId, port= port, username='root', password='123456')
# 定位到需要的目录
stdin, stdout, stderr = ssh.exec_command('cd /opt/xvdb/tomcat_ite/bin')
# 查询当前目录位置
stdin, stdout, stderr = ssh.exec_command('pwd')
result = stdout.read()
# 获取当前进程号
stdin, stdout, stderr = ssh.exec_command('ps -ef | grep tomcat_ite')
result = stdout.read()
#判断如果 包含有jdk则为 正常进程 需要杀掉该进程
kid_list = getkid(result)
print(kid_list)
#执行命令杀掉进程
if len(kid_list) !=0:
ssh.exec_command('kill -9 %s' %str(kid_list[1]))
#重启服务器
if len(kid_list) !=0:
stdin, stdout, stderr = ssh.exec_command('source /etc/profile;/opt/xvdb/tomcat_ite/bin/startup.sh')
result=stdout.readlines()
print(result)
print ('重启成功')
# 关闭连接
ssh.close()
#分析返回值 得到进程号
def getkid(result):
session_str = str(result,encoding='utf-8')
session = session_str.split('\n')
print(session)
#新建一个列表来接收 kid
kid_list = []
for i in session:
if i.count('jdk')>0:
kid_str = i.split(' ')
for j in kid_str :
if j != '':
kid_list.append(j)
print(kid_list)
return kid_list