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 远程执行命令时,我们需要遵循以下几个步骤:
- 安装 Paramiko 模块。
- 连接远程服务器。
- 执行远程命令。
- 关闭 SSH 连接。
- 处理异常情况。
这些步骤将帮助你在 Python 中轻松实现 SSH 远程执行命令的功能。
原创文章,作者:VGTPD,如若转载,请注明出处:https://www.506064.com/n/375141.html