Python SSH 远程执行命令

Python SSH 远程执行命令是指在一个服务器上执行远程另一个服务器上命令。如果你需要在本地机器上执行命令,或者在远程机器上执行本地命令,你都可以使用 SSH。在 Python 中使用 SSH 有很多好处,比如可以自动化一些重复的任务。

一、安装 Python 的 Paramiko 模块

在使用 Python SSH 远程执行命令之前,我们需要先安装 Python 的 Paramiko 模块。Paramiko 是一个 Python 实现的 SSHv2 协议,可以与 SSH 服务器进行通信。以下是 Paramiko 的安装方法:

pip install paramiko

安装完成后,在你的 Python 脚本中,输入以下命令引用 Paramiko 模块:

import paramiko

二、连接远程服务器

在使用 Paramiko 模块进行 SSH 连接之前,我们需要先创建 SSH Client(). 然后,使用 connect() 方法连接远程服务器。在这里,我们为 SSH 连接指定用户名和密码。以下是 Python 连接远程服务器的代码:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='remote_hostname', port=22, username='username', password='password')

其中,

  • set_missing_host_key_policy() 方法将 SSHClient() 中的 HostKeysPolicy() 属性设置为一个自动添加策略,即自动添加新的主机公钥,然后将所有主机密钥都接受为合法密钥。
  • connect() 方法中,指定了远程服务器的主机名(hostname)、端口号(port)、用户名(username)和密码(password)。

三、执行远程命令

连接到远程服务器后,我们可以使用 Python 脚本执行远程命令。可以使用 exec_command() 方法,该方法接受一个字符串形式的 Linux 命令作为输入,并返回三个文件对象:stdin、stdout 和 stderr。以下是 Python 执行远程命令的代码:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='remote_hostname', port=22, username='username', password='password')

stdin, stdout, stderr = ssh.exec_command('ls')

for line in stdout:
    print(line.strip())

在这里,我们将命令 ‘ls’ 作为参数传递给 exec_command() 方法,然后使用 stdout 对象从返回的三个文件对象中获取命令的输出。

四、关闭 SSH 连接

在执行完远程命令后,我们需要关闭 SSH 连接以保存服务器资源。可以使用 close() 方法关闭连接。以下是关闭 SSH 连接的 Python 代码:

ssh.close()

五、异常处理

在执行 SSH 连接操作时,我们可能会遇到各种连接错误。为了处理这些错误,我们可以使用 try 和 except 语句块。以下是如何在 Python 中处理连接异常的方式:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:
    ssh.connect(hostname='remote_hostname', port=22, username='username', password='password')
except paramiko.AuthenticationException:
    print("Authentication failed, please verify your crendentials")
except paramiko.SSHException as sshException:
    print("Unable to establish SSH connection: {}".format(sshException))
except paramiko.Exception as e:
    print(e)
    print("Something went wrong while connecting to the RemoteHost")
    exit(1)

在这个例子中,我们捕获了 paramiko.AuthenticationException、paramiko.SSHException 和其他 paramiko.Exception。这些异常总是中止执行,并显示适当的消息。

六、总结

在使用 Python 进行 SSH 远程执行命令时,我们需要遵循以下几个步骤:

  1. 安装 Paramiko 模块。
  2. 连接远程服务器。
  3. 执行远程命令。
  4. 关闭 SSH 连接。
  5. 处理异常情况。

这些步骤将帮助你在 Python 中轻松实现 SSH 远程执行命令的功能。

原创文章,作者:VGTPD,如若转载,请注明出处:https://www.506064.com/n/375141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VGTPD的头像VGTPD
上一篇 2025-04-29 12:49
下一篇 2025-04-29 12:49

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python for循环求1到100的积

    Python中的for循环可以方便地遍历列表、元组、字典等数据类型。本文将以Python for循环求1到100的积为中心,从多个方面进行详细阐述。 一、for循环语法 Pytho…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python编程二级证书考试相关现已可以上网购买

    计算机二级Python考试是一项重要的国家级认证考试,也是Python编程的入门考试。与其他考试一样,Python编程二级证书的考生需要进入正式考试,而为了备考,这篇文章将详细介绍…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29

发表回复

登录后才能评论