python如何利用paramiko执行服务器命令

1. paramiko概述

Paramiko是一个用于在Python中实现SSH协议的模块,它提供了一种简单而强大的方式来连接和管理远程服务器。使用Paramiko可以轻松执行命令、上传和下载文件以及在远程服务器上进行文件操作。

2. 安装paramiko

在开始使用Paramiko之前,我们需要先安装它。可以使用pip命令来安装paramiko:

pip install paramiko

3. 连接服务器

在使用Paramiko之前,我们需要先建立与远程服务器的连接。可以通过Paramiko的SSHClient类来实现连接操作:

import paramiko

# 创建SSH对象

ssh = paramiko.SSHClient()

# 自动添加主机名和密钥到本地Known_hosts文件

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器

ssh.connect(hostname='服务器IP', username='用户名', password='密码')

上述代码创建了一个SSH对象,并使用connect()方法连接了远程服务器。其中,需要填入的参数有:

hostname: 远程服务器的IP地址

username: 登录远程服务器的用户名

password: 远程服务器密码

通过以上操作,我们成功建立了与远程服务器的连接。

4. 执行服务器命令

在与远程服务器建立连接后,我们可以使用SSHClient对象的exec_command()方法来执行服务器命令:

# 执行命令

stdin, stdout, stderr = ssh.exec_command('要执行的命令')

其中,exec_command()方法的参数是要执行的命令字符串。该方法返回了三个文件对象:

stdin: 标准输入流,可以向远程服务器发送输入信息

stdout: 标准输出流,保存了命令的输出结果

stderr: 标准错误流,保存了命令执行过程中的错误信息

通过以上代码,我们可以执行指定的命令,并获取到输出结果和错误信息。下面是一个示例:

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

# 获取输出结果

output = stdout.read().decode('utf-8')

print(output)

# 获取错误信息

errors = stderr.read().decode('utf-8')

print(errors)

上述代码执行了一个ls -l命令,获取当前目录下的文件列表,并输出到控制台。使用read()方法读取文件对象的内容,并使用decode()方法将二进制数据转换为字符串。

5. 断开连接

完成与远程服务器的操作后,我们需要手动断开与服务器的连接。可以使用SSHClient对象的close()方法来实现断开连接:

# 断开连接

ssh.close()

以上代码会关闭与远程服务器的连接。

6. 示例代码

下面是一个完整的示例代码,演示了如何使用paramiko执行服务器命令:

import paramiko

def execute_command(hostname, username, password, command):

# 创建SSH对象

ssh = paramiko.SSHClient()

# 自动添加主机名和密钥到本地Known_hosts文件

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器

ssh.connect(hostname=hostname, username=username, password=password)

try:

# 执行命令

stdin, stdout, stderr = ssh.exec_command(command)

# 获取输出结果

output = stdout.read().decode('utf-8')

# 获取错误信息

errors = stderr.read().decode('utf-8')

# 输出结果和错误信息

print('Output:\n', output)

print('Errors:\n', errors)

finally:

# 断开连接

ssh.close()

# 示例:执行ls -l命令

execute_command('服务器IP', '用户名', '密码', 'ls -l')

在以上示例代码中,我们定义了一个execute_command()函数,函数内部封装了连接服务器、执行命令和断开连接的操作。通过调用该函数并传入相应参数,就可以执行指定的命令。

总结

使用Paramiko可以轻松地在Python中执行服务器命令。通过建立与远程服务器的连接,我们可以使用SSHClient对象的exec_command()方法来执行命令,并获取输出结果和错误信息。最后,记得手动断开与服务器的连接。

Paramiko还提供了其他功能,如上传和下载文件、执行文件操作等。可以根据实际需求进一步扩展和应用。希望本文对您了解如何使用Paramiko执行服务器命令有所帮助。

后端开发标签