python之paramiko密钥库+密码登录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之paramiko密钥库+密码登录相关的知识,希望对你有一定的参考价值。

#!/usr/local/anaconda3/bin/python
# coding:utf-8

# Create your views here.
# ====================================================
# Author: chang - EMail:[email protected]
# Last modified: 2017-07-11
# Filename: downloadrem.py
# Description: file upload ,base paramiko, sys, time
# blog:http://www.cnblogs.com/changbo
# ====================================================

"""
1, 每日晚1:30分执行webserver控制台和项目日志的备份,脚本Path:/home/yunwei/jb/mvlogs.sh
2,每日凌晨2:30分执行移动tar以外的已打包日志到回收站/tmp/trash(回收站定期)
3,将保存的日志回传到本地各相关站点目录下
4,每天22:30清空回收站
5,初始化用户环境alias rm=‘mv --verbose -f --backup=numbered --target-directory /tmp/trash‘
6,find -not -name ‘*.tar.gz‘ |xargs mv -f --backup=numbered -t /tmp/trash/ 2>/dev/null
"""

import paramiko
import time
import sys
import threading


ipList = [xx.x.x.x]
# accPwd = {ipList[0]: ‘xxxxxxxxxx‘}


bakTime = time.strftime(%Y%m%d)
filename = remdown + bakTime + .tar.gz

logPath = /data
locHome = logPath + /hkdaex/home/ + filename
locTrade = logPath + /hkdaex/trade/ + filename

remHome = logPath + /homelogs/ + filename
remTrade = logPath + tradelogs/ + filename

private_key = "F:\\\\testcode\\\\id_rsa"


class SSHSession:
    def __init__(self, host, username=xxxxx, port=22):
        self.host = host
        self.port = port
        self.username = username
        # self.pwd =

    def connect(self):
        transport = paramiko.Transport((self.host, self.port))
        key = paramiko.RSAKey.from_private_key_file(private_key, xxxxxxxxxx)
        transport.connect(username=self.username, pkey=key)
        self.__transport = transport

    def close(self):
        self.__transport.close()

    def progressbar(self, transferred, toBeTransferred, suffix=‘‘):
        bar_len = 60
        filled_len = int(round(bar_len * transferred / float(toBeTransferred)))
        percents = round(100.0 * transferred / float(toBeTransferred), 1)
        bar = = * filled_len + - * (bar_len - filled_len)
        sys.stdout.write(Download [%s] %s%s ...%s\\n % (bar, percents, %, suffix))
        sys.stdout.flush()

    # def getloadfile(self, target_path, local_path):u*TB4oCjdUZb2%m6
    def getloadfile(self):
        ssh = paramiko.SSHClient()
        ssh._transport = self.__transport
        stdin, stdout, stderr = ssh.exec_command(ls)
        print(stdout.read().decode())
        # sftp = paramiko.SFTPClient.from_transport(self.__transport)
        # print(‘Download remote log file :‘)
        # sftp.get(target_path, local_path, callback=self.progressbar)
        return success


def execDown():
    # try:
        ssh = SSHSession(ipList[0])
        ssh.connect()
        # status = ssh.getloadfile(remHome, locHome)
        # print(status)
        # status2 = ssh.getloadfile(remTrade, locTrade)
        status = ssh.getloadfile()
        print(status)
        ssh.close()
    # except Exception as e:
    #     print(e)

if __name__ == __main__:
    t1 = threading.Thread(target=execDown)
    t1.start()

END!

以上是关于python之paramiko密钥库+密码登录的主要内容,如果未能解决你的问题,请参考以下文章

Python第三方库paramiko SSH连接

python之paramiko模块

Python之远程控制库paramiko

Python之远程控制库paramiko

使用 Paramiko 进行多因素身份验证(密码和密钥)

python3之paramiko模块