Python运维自动化之paramiko模块



Paramiko是一个Python库,用于实现SSH(Secure Shell)连接。通过Paramiko,运维人员可以在Python脚本中使用SSH协议,连接到远程服务器并执行命令、上传/下载文件等操作。下面是一个简单的例子,展示如何使用Paramiko连接到远程服务器并执行命令:

import paramiko  
  
# 创建SSH客户端  
ssh = paramiko.SSHClient()  
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
  
# 连接远程服务器  
ssh.connect(hostname='your_server_ip', port=22, username='your_username', password='your_password')  
  
# 执行命令  
stdin, stdout, stderr = ssh.exec_command('ls')  
output = stdout.read().decode()  
print(output)  
  
# 关闭连接  
ssh.close()

在上面的代码中,我们首先创建了一个SSH客户端对象,并设置了自动添加主机密钥的策略。然后,我们使用connect()方法连接到远程服务器,需要提供服务器的IP地址、SSH端口、用户名和密码。接下来,我们使用exec_command()方法执行了一个ls命令,并打印了命令的输出。最后,我们使用close()方法关闭了SSH连接。

除了执行命令外,Paramiko还支持上传和下载文件、创建SFTP连接等操作。下面是一个例子,展示如何使用Paramiko上传文件到远程服务器:

import paramiko  
  
# 创建SSH客户端  
ssh = paramiko.SSHClient()  
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
  
# 连接远程服务器  
ssh.connect(hostname='your_server_ip', port=22, username='your_username', password='your_password')  
  
# 上传文件  
sftp = ssh.open_sftp()  
local_path = '/path/to/local/file'  
remote_path = '/path/to/remote/file'  
sftp.put(local_path, remote_path)  
sftp.close()  
  
# 关闭连接  
ssh.close()

在上面的代码中,我们首先创建了一个SSH客户端对象,并连接到了远程服务器。然后,我们使用open_sftp()方法创建了一个SFTP对象,并使用put()方法将本地文件上传到远程服务器。最后,我们关闭了SFTP连接和SSH连接。