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()
    
    
  • 相关阅读:
    DOM操作——JavaScript怎样添加、移除、移动、复制、创建和查找节点
    Vue入门实战: 小白总结
    localStorage如何设置过期时间?
    北京游记-2019年小总结
    寒假宅家微记录
    SpringBoot 使用 swagger
    校园旧书交易交换平台
    Html 文件内容展示 图片展示
    Python 简易Cmd控制
    Python 多线程实现循环打印 abc
  • 原文地址:https://www.cnblogs.com/dbf-/p/11114148.html
Copyright © 2011-2022 走看看