热门标签 | 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 作为输出的打印语句。相同的程序可以针对不同的命令进行修改,以根据需要获取信息。


推荐阅读
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 本文档介绍了如何使用ESP32开发板在STA模式下实现与TCP服务器的通信,包括环境搭建、代码解析及实验步骤。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 解决Win10系统自动删除破解软件的问题
    如何处理Win10系统频繁自动删除安装的破解软件?本文将详细介绍可能的原因及解决方案,帮助用户顺利安装所需软件。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 本文详细介绍了笔记本电脑上多种实用的快捷键,包括屏幕调整、图形设置、分辨率更改、驱动更新、导航操作、音量控制及屏幕锁定等,旨在帮助用户更高效地使用笔记本电脑。 ... [详细]
  • 本文记录了在Windows 8.1系统环境下,使用IIS 8.5和Visual Studio 2013部署Orchard 1.7.2过程中遇到的问题及解决方案,包括503服务不可用错误和web.config配置错误。 ... [详细]
  • 在Python编程中,经常需要处理文件下载的任务。本文将介绍三种常用的下载方法:使用urllib、urllib2以及requests库进行HTTP请求下载,同时也会提及如何通过ftplib从FTP服务器下载文件。 ... [详细]
  • 本文详细介绍了如何在Apache Kafka中进行Topic级别的配置,包括创建、修改和删除配置参数的具体步骤,并提供了详细的配置属性表。 ... [详细]
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社区 版权所有