zoukankan      html  css  js  c++  java
  • Python paramiko

    Python 的 paramiko 模块基于 SSH 连接远程服务器并执行操作

    SSHClient

    基于用户名密码连接

    示例:

    import paramiko
    
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)		# 自动将IP添加到 known_hosts 中
    ssh.connect(hostname='', port=22, username='root', password='password')
    
    stdin, stdout, stderr = ssh.exec_command('ls')	# 输入、输出、错误信息 / 执行的命令
    
    result = stdout.read()	# 获取输出结果
    if not result:
        result = stderr.read()	# 获取错误信息
    print(result)
    
    ssh.close()		# 关闭连接
    
    

    如果 不使用ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy),且 known_hosts 中没有主机信息就会报错:

    paramiko.ssh_exception.SSHException: Server 'localhost' not found in known_hosts
    

    基于密钥对连接

    通过用户名密码连接有许多问题,可以通过公钥私钥连接
    连接前需要提前生成密钥对
    示例:

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('/Users/teihiroshibon/.ssh/id_rsa')		# 私钥文件地址
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
    ssh.connect(hostname='127', port=22, username='root', pkey=private_key)
    stdin, stdout, stderr = ssh.exec_command('ifconfig')
    result = stdout.read()
    if not result:
        result = stderr.read()
    print(result)
    ssh.close()
    
    

    SFTPClient

    基于用户名密码连接

    示例:

    
    import paramiko
    import os
    
    transport = paramiko.Transport(('localhost', 22))
    transport.connect(username='root', password='password')
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    """
    upload
    前面是要上传的文件,后面是上传的目标目录
    """
    sftp.put('test.py', '/root/upload.py')
    
    """
    download
    前面是要下载的文件,后面是下载的目标目录
    """
    sftp.get('/data/test/url_view.py', 'download.py')
    
    
    transport.close()
    
    

    基于密钥对连接

    示例:

    
    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('/Users/teihiroshibon/.ssh/id_rsa')
    transport = paramiko.Transport(('localhost', 22))
    transport.connect(username='root', pkey=private_key)
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    
    """upload"""
    sftp.put('event.py', '/data/test/upload.py')
    
    """download"""
    sftp.get('/data/test/url_view.py', 'download.py')
    
    transport.close()
    
    
  • 相关阅读:
    open_basedir restriction in effect,解决php引入文件权限问题 解决方法
    Linux增加虚拟内存方法
    centos下kill、killall、pkill命令区别
    正则表达式全集
    Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL
    配置frp实现内网穿透
    解决微信授权回调页面域名只能设置一个的问题 [php]
    高性能Mysql主从架构的复制原理及配置详解
    【Git】工作中99%能用到的git命令
    SVN服务器搭建和使用
  • 原文地址:https://www.cnblogs.com/dbf-/p/11114148.html
Copyright © 2011-2022 走看看