Python基于paramiko库操作远程服务器的实现

 更新时间:2025年01月18日 09:34:02   作者:懒大王爱吃狼  
本文主要介绍了使用Python的Paramiko库来操作远程服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Paramiko 是一个用于在 Python 中实现 SSHv2 协议的模块,可以用于连接到远程服务器并执行各种操作,如执行命令、上传和下载文件等。以下是一个基于 Paramiko 库操作远程服务器的示例。

首先,确保你已经安装了 Paramiko 库。如果还没有安装,可以使用以下命令进行安装:

pip install paramiko

以下是一个示例脚本,展示如何使用 Paramiko 连接到远程服务器并执行一些基本操作:

import paramiko

def ssh_connect(hostname, port, username, password):
    # 创建一个SSH客户端对象
    ssh_client = paramiko.SSHClient()
    
    # 自动添加远程服务器的主机名和密钥到本地known_hosts文件中
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    try:
        # 连接到远程服务器
        ssh_client.connect(hostname=hostname, port=port, username=username, password=password)
        print(f"Successfully connected to {hostname}")
        return ssh_client
    except Exception as e:
        print(f"Failed to connect to {hostname}: {e}")
        return None

def execute_command(ssh_client, command):
    try:
        # 执行命令
        stdin, stdout, stderr = ssh_client.exec_command(command)
        
        # 读取命令的标准输出和标准错误
        output = stdout.read().decode()
        error = stderr.read().decode()
        
        return output, error
    except Exception as e:
        print(f"Failed to execute command: {e}")
        return None, str(e)

def sftp_upload_file(ssh_client, local_file_path, remote_file_path):
    try:
        # 使用SFTP上传文件
        sftp_client = ssh_client.open_sftp()
        sftp_client.put(local_file_path, remote_file_path)
        sftp_client.close()
        print(f"Successfully uploaded {local_file_path} to {remote_file_path}")
    except Exception as e:
        print(f"Failed to upload file: {e}")

def sftp_download_file(ssh_client, remote_file_path, local_file_path):
    try:
        # 使用SFTP下载文件
        sftp_client = ssh_client.open_sftp()
        sftp_client.get(remote_file_path, local_file_path)
        sftp_client.close()
        print(f"Successfully downloaded {remote_file_path} to {local_file_path}")
    except Exception as e:
        print(f"Failed to download file: {e}")

def main():
    hostname = 'your_remote_server_ip'
    port = 22
    username = 'your_username'
    password = 'your_password'
    
    # 连接到远程服务器
    ssh_client = ssh_connect(hostname, port, username, password)
    
    if ssh_client:
        # 执行命令
        command = 'ls -l'
        output, error = execute_command(ssh_client, command)
        print(f"Command Output:\n{output}")
        if error:
            print(f"Command Error:\n{error}")
        
        # 上传文件
        local_file_path = '/path/to/local/file.txt'
        remote_file_path = '/path/to/remote/file.txt'
        sftp_upload_file(ssh_client, local_file_path, remote_file_path)
        
        # 下载文件
        remote_file_to_download = '/path/to/remote/another_file.txt'
        local_file_to_save = '/path/to/local/another_file.txt'
        sftp_download_file(ssh_client, remote_file_to_download, local_file_to_save)
        
        # 关闭SSH连接
        ssh_client.close()

if __name__ == "__main__":
    main()

说明:

  • ssh_connect 函数:用于连接到远程服务器。
  • execute_command 函数:用于在远程服务器上执行命令,并返回命令的输出和错误信息。
  • sftp_upload_file 函数:用于通过 SFTP 上传文件到远程服务器。
  • sftp_download_file 函数:用于通过 SFTP 从远程服务器下载文件。
  • main 函数:用于连接服务器、执行命令、上传和下载文件,并最终关闭 SSH 连接。

注意事项:

  • 请确保替换示例代码中的 hostnameusernamepasswordlocal_file_path 和 remote_file_path 为实际的服务器信息。
  • 在生产环境中,不建议在代码中硬编码密码。可以考虑使用 SSH 密钥认证或其他更安全的方式来管理认证信息。

到此这篇关于Python基于paramiko库操作远程服务器的实现的文章就介绍到这了,更多相关Python操作远程服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 实例详解Python的进程,线程和协程

    实例详解Python的进程,线程和协程

    这篇文章主要为大家详细介绍了Python进程,线程和协程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Python3 翻转二叉树的实现

    Python3 翻转二叉树的实现

    这篇文章主要介绍了Python3 翻转二叉树的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Python序列化模块JSON与Pickle

    Python序列化模块JSON与Pickle

    这篇文章介绍了Python的序列化模块JSON与Pickle,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • python实现ipsec开权限实例

    python实现ipsec开权限实例

    这篇文章主要介绍了python实现ipsec开权限的方法,弥补了windows自带的命令行工具netsh ipsec static add filter不支持批量添加及添加重复规则的不足,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录

    Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录

    本篇文章主要介绍了Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录,具有一定的参考价值,有兴趣的可以了解下
    2017-09-09
  • 关于不懂Chromedriver如何配置环境变量问题解决方法

    关于不懂Chromedriver如何配置环境变量问题解决方法

    这篇文章主要介绍了关于不懂Chromedriver如何配置环境变量问题解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 基于python实现Pycharm断点调试

    基于python实现Pycharm断点调试

    这篇文章主要介绍了基于python实现Pycharm断点调试,在我们写程序的时候,很容易遇到各种各样的bug,然后编译器提示程序出错的地方。很多时候可以通过提示的信息修改程序,但是有时我们想得到更多的信息,这个时候就需要进行断点调试,下面我们就一起来学习ycharm断点调试
    2022-02-02
  • 解决python3运行selenium下HTMLTestRunner报错的问题

    解决python3运行selenium下HTMLTestRunner报错的问题

    今天小编就为大家分享一篇解决python3运行selenium下HTMLTestRunner报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python去除列表中重复元素的方法

    Python去除列表中重复元素的方法

    这篇文章主要介绍了Python去除列表中重复元素的方法,实例分析了Python中去除列表重复元素的使用技巧,需要的朋友可以参考下
    2015-03-03
  • Python实现TCP协议下的端口映射功能的脚本程序示例

    Python实现TCP协议下的端口映射功能的脚本程序示例

    端口映射一个最基本的运作形态就是通过一个中间端口将一个端口发送的数据全部转给另一个端口,well,这里我们就来看一下Python实现TCP协议下的端口映射功能的脚本程序示例
    2016-06-06

最新评论