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()
    
    
  • 相关阅读:
    MySQL整理碎片
    华为云容器引擎 单实例模式部署 NACOS DOCKER
    NACOS DOCKER 官方镜像启动失败 No Datasource set
    nginx docker官方镜像使用自定义启动命令启动失败
    windows docker desktop配置国内镜像仓库
    SAP AUFM 针对订单的货物移动
    css 子元素margin-top影响了父元素
    HighCharts 嵌套仪表盘
    JAVA 使用JCO3调用SAP RFC函数
    线下WINDOWS主机挂载华为云存储
  • 原文地址:https://www.cnblogs.com/dbf-/p/11114148.html
Copyright © 2011-2022 走看看