python代码连接远程服务器并执行命令

# coding=utf-8

# coding=utf-8
'''
根据时间检测log日志文件日期,并自动打包压缩
'''
import paramiko, time, datetime, base64


def days_ago():
    '''
    获取当前日期前30天日期, 不算当天, 返回 list
    :return:
    '''
    today = time.strftime('%Y,%m,%d')  # <class 'str'>
    t = time.strptime(today, '%Y,%m,%d')  # # <class 'time.struct_time'>
    y, m, d = t[0:3]
    # print(y, m, d)
    thirty_days_list = []
    for dd in range(1, 0, -1):
        Date = str(datetime.datetime(y, m, d) - datetime.timedelta(dd)).split()
        days_b = Date[0]  # .replace('-', '') #  <class 'str'>
        thirty_days_list.append(days_b)
    return thirty_days_list

# 远程登陆操作系统
def ssh(sys_ip, username, password):
    # try:
    before_date_int = int(days_ago()[0].replace('-', ''))
    # 创建ssh客户端
    client = paramiko.SSHClient()
    # 第一次ssh远程时会提示输入yes或者no
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 密码方式远程连接
    client.connect(sys_ip, 22, username=username, password=base64.b64decode(password).decode(), timeout=20)
    # 互信方式远程连接
    # key_file = paramiko.RSAKey.from_private_key_file("/root/.ssh/id_rsa")
    # ssh.connect(sys_ip, 22, username=username, pkey=key_file, timeout=20)
    # 执行查询命令
    stdin, stdout, stderr = client.exec_command('cd /opt/gh2/app/HistoryPrices-py/mmbuy_logs/;ls')
    # 获取查询命令执行结果,返回的数据是一个list
    result_ls = stdout.readlines()
    # print('ls: ', result)
    # print(type(result))
    result_tar = None
    for one_log in result_ls:
        if len(one_log) <= 12:
            one_log_file = one_log.replace('\n', '')
            if int(one_log_file.replace('-', '')) < before_date_int:
                stdin, stdout, stderr = client.exec_command('cd /opt/gh2/app/HistoryPrices-py/mmbuy_logs/;tar -zcvf {}.tar.gz {};rm -rf {};ls'.format(one_log_file, one_log_file, one_log_file))
                result_tar = stdout.readlines()

                # print('tar: ', result)
    print(sys_ip, '\n压缩前:', result_ls, '\n压缩后:', result_tar, '\n\n\n')



    # return result
    # except Exception as e:
    #     print(e)
    # finally:
    client.close()


if __name__ == "__main__":
    sys_ip_list = ['127.0.0.1']
    username = "***"
    password = "***"
    for sys_ip in sys_ip_list:
        ssh(sys_ip, username, password)
    # print(int(days_ago()[0].replace('-', '')))
#
posted @ 2019-01-25 14:24  殇夜00  阅读(15)  评论(0)    收藏  举报