zoukankan      html  css  js  c++  java
  • paramiko 模块封装

    #!/usr/bin/env python
    #coding=utf-8

    import paramiko, getpass,sys,traceback

    class ssh_utils():
    def login_by_passwd(self, ip, port, username, passwd):
    self.ip = ip
    self.port = port
    self.username = username
    self.passwd = passwd
    self.pkey = None

    def login_by_key(self, username, key_path, passwd):
    try:
    self.pkey=paramiko.RSAKey.from_private_key_file(key_path)
    except paramiko.PasswordRequiredException:
    if not passwd:
    passwd = getpass.getpass('RSA key password: ')
    self.pkey = paramiko.RSAKey.from_private_key_file(key_path, passwd)

    def ssh(self,shell):
    try:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    if self.pkey:
    ssh.connect(self.ip, self.port, self.username, compress = True, pkey= self.pkey)
    else:
    if not self.passwd:
    self.passwd = getpass.getpass('input password: ')
    ssh.connect(self.ip,self.port,self.username, self.passwd)
    stdin, stdout, stderr = ssh.exec_command(shell)
    res = stdout.readlines()
    ssh.close()
    return res
    except:
    type, value, tb = sys.exc_info()
    return traceback.format_exception(type, value, tb)

    def scp(self,localpath,remotepath):
    try:
    t = paramiko.Transport((self.ip,self.port))
    if self.pkey:
    t.connect(self.ip, self.port, self.username, pkey= self.pkey)
    else:
    if not self.passwd:
    self.passwd = getpass.getpass('input password: ')
    t.connect(username = self.username, password = self.passwd)
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.put(localpath,remotepath)
    t.close()
    return "SCP OK"
    except:
    type, value, tb = sys.exc_info()
    return traceback.format_exception(type, value, tb)

    if __name__ == '__main__':
    #使用例子
    myssh = ssh_utils()
    myssh.login_by_passwd("192.168.11.181",22,"ahwater","Aa7.")
    ret = myssh.scp('c:\inetpub\','d:\sl\')
    #myssh.ssh("cd d: && pwd")

  • 相关阅读:
    (二) 线程创建、中止、中断、线程Join、优先级、调度
    cmake 生成64位项目
    ffmpeg + sdl player console
    ffmpeg cmd
    ffmpeg coco2d-x lua test
    ffmpeg windows config win32/win64 compile
    ffmpeg configure --help
    ffmpeg Windows platfrom ndk compile ffmpeg
    NDK r21编译FFmpeg 4.2.2(x86、x86_64、armv7、armv8)
    解决NDK交叉编译 selected processor does not support ARM mode libtheora的错误
  • 原文地址:https://www.cnblogs.com/ruiy/p/7144458.html
Copyright © 2011-2022 走看看