利用python脚本实现windows上传部署tomcat

@利用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值