热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用PythonParamiko库在远程服务器上高效执行Shell脚本的方法与技巧

如何使用 Python-Paramiko 在远程机器中执行 Shell 命令原文:https://www . geesforge

如何使用 Python-Paramiko 在远程机器中执行 Shell 命令

原文:https://www . geesforgeks . org/如何使用 python-paramiko 执行远程机器中的 shell 命令/

Paramiko 是一个 Python 库,通过 SSh 与远程设备进行连接。Paramiko 正在使用 SSH2 作为 SSL 的替代品,在两台设备之间建立安全连接。它还支持 SFTP 客户端和服务器模型。

正在验证 SSH 连接

要验证 SSH 连接,我们需要设置一个私有 RSA SSH 密钥(不要与 OpenSSH 混淆)。我们可以使用以下命令生成密钥:

$ ssh-keygen -t rsa

这将提示我们为密钥提供一个名称。任意命名它,并生成一个公钥/私钥对。输入您希望用来保存密钥的名称。

即/home/username/。ssh/id_rsa

接下来,系统会提示您提供密码(请随意留空)。

现在我们有了密钥,我们需要将它复制到我们的远程主机上。最简单的方法是使用 ssh-copy-id :

$ ssh-copy-id -i ~/。ssh/mykey 用户名@my_remote_host.org

如果你想检查你已经有哪些钥匙,这些可以在你的系统中找到。ssh 目录:

~/.sshCheck

我们正在寻找以下列标题开头的关键字:

——开始 RSA 私钥——

——结束 RSA 私钥——

SSH(安全外壳)是在 SSH 协议中使用的访问凭证。换句话说,它是一种加密网络协议,用于通过网络传输加密数据。它允许您连接到一台或多台服务器,而无需您记住或输入要从一个系统远程登录到另一个系统的每个系统的密码。

安装帕拉米科

要安装 paramiko 库,请在命令提示符下运行后续命令。paramiko 需要密码学作为依赖模块。因此,在命令提示符下运行这两个命令:

pip 安装 paramiko

pip 安装加密

注意:更多信息请参考 在 Windows 和 Linux 上安装 Paramiko

安装完成后,现在我们将使用 paramiko 库连接一个远程 SSH 服务器。等效代码片段如下所示:

Python 3

import paramiko
# Create object of SSHClient and
# connecting to SSH
ssh = paramiko.SSHClient()
ssh.connect('1.1.1.2', port=22, username='UserName',
            password='PassWord', timeout=3)
# Adding new host key to the local
# HostKeys object(in case of missing)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Execute command on SSH terminal
# using exec_command
stdin, stdout, stderr = ssh.exec_command('show ip interface brief')

以此为基础,只需使用一个 python 脚本,就可以自动登录到远程 SSH 服务器、执行命令和捕获结果。

通过这种方式,您可以在应用程序中创建到另一个主机的 SSH 连接,通过这种连接,您可以向主机发送命令并检索输出。

下面给出的程序也是如此。我们在这里打印用户名。

程序:

Python 3

import paramiko
output_file = 'paramiko.org'
def paramiko_GKG(hostname, command):
    print('running')
    try:
        port = '22'
        # created client using paramiko
        client = paramiko.SSHClient()
        # here we are loading the system
        # host keys
        client.load_system_host_keys()
        # connecting paramiko using host
        # name and password
        client.connect(hostname, port=22, username='geeksForgeeks',
                       password='geeksForgeeks')
        # below line command will actually
        # execute in your remote machine
        (stdin, stdout, stderr) = client.exec_command(command)
        # redirecting all the output in cmd_output
        # variable
        cmd_output = stdout.read()
        print('log printing: ', command, cmd_output)
        # we are creating file which will read our
        # cmd_output and write it in output_file
        with open(output_file, "w+") as file:
            file.write(str(cmd_output))
        # we are returning the output
        return output_file
    finally:
        client.close()
paramiko_GKG('10.10.10.1', 'uname')

输出:

$ python GFG_paramiko.py
running
[log printing: ,'uname','Linux\n']

因此,通过运行我们的 Python 文件,我们得到了一个带有 uname 命令和 Linux 作为输出的打印语句。相同的程序可以针对不同的命令进行修改,以根据需要获取信息。


推荐阅读
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
  • Windows 环境下安装 Git 并连接 GitHub 的详细步骤
    本文详细介绍了如何在 Windows 系统中安装 Git 工具,并通过配置 SSH 密钥实现与 GitHub 的安全连接。包括下载、安装、环境配置及验证连接等关键步骤。 ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
  • 使用RODBC库将数据导入R时遇到的问题:如何在长查询中传递变量而不产生换行符。 ... [详细]
  • 本文介绍了ADB(Android Debug Bridge)的基本概念、安装方法、环境配置、连接真机步骤以及常用命令和高级技巧。ADB是一个强大的工具,适用于Android设备的开发和调试。 ... [详细]
  • 本文介绍了一种使用inotifywait和rsync工具在两台服务器之间实现自动且高效的文件同步方案。通过设置SSH无密码登录,安装必要的软件,并配置inotify以优化性能,最终构建了一个实时响应文件变动并自动同步至备份节点的系统。 ... [详细]
  • 本文详细介绍了SSH(Secure Shell)的基础知识、应用场景以及如何在不同平台上使用SSH进行安全的远程操作。文章还探讨了SSH的高级用法,如免密登录和其他安全增强措施。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 输入命令:pyspiderall报错如下:原因:新版本Python引入了关键字async关键字(楼主使用的python版本是3.8),造成了python和pyspider关键字冲突 ... [详细]
  • Windows环境下部署Kubernetes Dashboard指南
    本指南详细介绍了如何在Windows系统中部署Kubernetes Dashboard,包括下载最新配置文件、修改服务类型以支持NodePort访问、下载所需镜像并启动Dashboard服务等步骤。 ... [详细]
  • 车载T-BOX智能网联终端的设计与实现
    本文介绍了一款基于瑞萨RH850微控制器、TICC2640R2F蓝牙微控制器和高通MDM9628处理器的T-BOX车载终端的设计。该终端通过集成CAN总线、GPS定位、数据加密、蓝牙通信和LTE无线数据传输技术,实现了车辆信息的高效采集与云端通信,支持远程车辆控制和诊断等功能。 ... [详细]
  • Gitee + Git 多人协作开发指南:轻松上手,解决代码冲突
    本文提供了一套详细的步骤,帮助团队成员快速安装和配置Git,通过Gitee进行高效的多人协作开发,同时解决常见的代码冲突问题。包括Git的下载、安装、与Gitee的集成以及项目管理的最佳实践。 ... [详细]
author-avatar
冰凌清泽_712
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有