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")

  • 相关阅读:
    Understanding Bootstrap Of Oracle Database
    Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
    Oracle Virtual Box 安装使用 说明
    PowerDesigner 企业架构模型 ( EAM ) 说明
    excel 数据导入 mysql
    Go语言基础之内置函数
    Go语言基础之defer语句
    匿名函数和闭包
    Go语言基础之类型别名和自定义类型
    【Github】remote: Support for password authentication was removed
  • 原文地址:https://www.cnblogs.com/ruiy/p/7144458.html
Copyright © 2011-2022 走看看