• 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()
    
    
  • 相关阅读:
    gt_argmax_overlaps = overlaps.argmax(axis=0) ValueError: attempt to get argmax of an empty sequence错误处理
    VS2013 "当前不会命中断点.还没有为该文档家在任何符号" 解决办法
    Spatial Transformer Networks
    1*1卷积
    how to detect circles and rectangle?
    opencv error: insufficient memory错误解决办法
    无人零售
    alt-opt and end2end
    开心的小明_动态规划
    国王和金矿问题_动态规划
  • 原文地址:https://www.cnblogs.com/dbf-/p/11114148.html
Copyright © 2020-2023  润新知