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

  • 相关阅读:
    adb命令
    Appium -选择、操作元素
    Appium -选择、操作元素2
    Appium环境安装
    selenium报错
    TCP和UDP的区别
    charles抓包的安装,使用说明以及常见问题解决(windows)
    网关协议学习:CGI、FastCGI、WSGI
    理论经典:TCP协议的3次握手与4次挥手过程详解
    OSI七层与TCP/IP五层网络架构详解
  • 原文地址:https://www.cnblogs.com/ruiy/p/7144458.html
Copyright © 2011-2022 走看看