zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    CF1539 VP 记录
    CF1529 VP 记录
    CF875C National Property 题解
    CF1545 比赛记录
    CF 1550 比赛记录
    CF1539E Game with Cards 题解
    CF1202F You Are Given Some Letters... 题解
    vmware Linux虚拟机挂载共享文件夹
    利用SOLR搭建企业搜索平台 之九(solr的查询语法)
    利用SOLR搭建企业搜索平台 之四(MultiCore)
  • 原文地址:https://www.cnblogs.com/augustyang/p/7512276.html
Copyright © 2011-2022 走看看