• python 执行上传,下载,批量执行命令,退出


    python 执行上传,下载,批量执行命令,退出

    #!/usr/bin/env python
    #_*_encoding:utf-8_*_
    
    #上传文件取源文件的MD5值,  查询目标端的MD5
    
    import os,sys,time,hashlib,datetime,paramiko,threading
    
    source = sys.argv[1] #源文件
    target = sys.argv[2] #目标文件
    ttt = 'ls',target
    ip = "ip_addr.txt"
    comm = ["hostname","ifconfig eth0 | awk 'NR==2{print $2}' |awk -F':' '{print $2}'"]
    #comm.append('ls '+target) #目标端文件名
    comm.append('md5sum '+target) #目标端文件,MD5
    
    def    Read_ip(ip_addr):
        with open(ip_addr,'rb')as f:
            f = f.readlines()
        return f
    
    def Put_File():        #上传文件及    取源文件的MD5值
        IP = Read_ip(ip)
        private_key_path = '/root/.ssh/id_rsa'
        key = paramiko.RSAKey.from_private_key_file(private_key_path)
        
        md5file=open(source,'rb')
        md5=hashlib.md5(md5file.read()).hexdigest()
        md5file.close()
        
        for line in range(len(IP)):
            I_P = IP[line].strip()
            t = paramiko.Transport((I_P,22))
            t.connect(username='root',pkey = key)
            sftp = paramiko.SFTPClient.from_transport(t)
            sftp.put(source, target)
            t.close()
            return md5
        
    def Achieve_target_MD5():#获取目标端的MD5值 
        llist = []
        IP = Read_ip(ip)
        private_key_path = '/root/.ssh/id_rsa'
        key = paramiko.RSAKey.from_private_key_file(private_key_path)
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        for line in range(len(IP)):
            IIP = IP[line].strip()
            for ii in range(len(comm)):
                C_Command = comm[ii].strip()
    
                ssh.connect(IIP, 22,username='root', pkey = key)
                stdin, stdout, stderr = ssh.exec_command(C_Command)
                content = stdout.read()
                ssh.close()
                llist.append(content)
        return llist
    if __name__ =='__main__':
        m_sum = Put_File()
        print m_sum
        tar_infor = Achieve_target_MD5()
        
        for i in range(2,len(tar_infor),3):
            print tar_infor[i]
    上传与验证MD5
  • 相关阅读:
    WinDbg符号表设置的基础
    Mysql的用户管理与授权
    Django的models由数据库表生成
    Spring框架第一天(搭建项目)
    Python中的参数
    Java集合
    Mysql的锁
    # django通过操作admin对原有的数据库进行操作
    数据库连接池与SQL工具类
    MySql的事务及数据的导入导出
  • 原文地址:https://www.cnblogs.com/augustyang/p/7512276.html
Copyright © 2020-2023  润新知