paramiko学习

1.基于用户名和密码的 sshclient 方式登录

复制代码
def connect_server(hostname, port, username, password):
    try:
        # 创建SSH对象
        ssh_client = paramiko.SSHClient()
        # 允许连接不在know_hosts文件中的主机
        ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        # 连接服务器
        ssh_client.connect(hostname, port, username, password)
        # 执行命令
        std_in, std_out, std_err = ssh_client.exec_command('ls')
        # 获取命令结果
        #for line in std_out:
            #print(line.strip("\n"))
        ssh_client.close()
    except Exception as e:
        print(e)
复制代码

2.基于公钥密钥的 SSHClient 方式登录

复制代码
def connect_server(hostname, port, username):
    # 指定本地的RSA私钥文件,如果建立密钥对时设置的有密码,password为设定的密码,如无不用指定password参数
    pkey = paramiko.RSAKey.from_private_key_file('/home/super/.ssh/id_rsa', password='12345')
    # 建立连接
    ssh = paramiko.SSHClient()
    ssh.connect(hostname, port, username, pkey=pkey)
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df -hl')
    # 结果放到stdout中,如果有错误将放到stderr中
    print(stdout.read())
    # 关闭连接
    ssh.close()
复制代码

3.paramiko上传文件

复制代码
def upload_file(hostname, port, username, password, local_path, server_path):
    try:
        t = paramiko.Transport((hostname, port))
        t.connect(username=username, password=password)
        sftp = paramiko.SFTPClient.from_transport(t)
        sftp.put(local_path, server_path)
        t.close()
    except Exception as e:
        print(e)
复制代码

4.paramiko下载文件

复制代码
def download_file(hostname, port, username, password, local_path, server_path):
    try:
        t = paramiko.Transport((hostname, port))
        t.connect(username=username, password=password)
        sftp = paramiko.SFTPClient.from_transport(t)
        sftp.get(local_path, server_path)
        t.close()
    except Exception as e:
        print(e)
复制代码

 

posted @   Einewhaw  阅读(65)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示