Paramiko:一个超实用的Python SSH库!

文摘   2024-10-31 06:50   上海  

大家好!我是风哥,一个资深Python工程师。今天要给大家介绍一个在Python中操控远程服务器的神器——Paramiko!它是一个强大的SSH库,可以让你轻松地连接到远程服务器,执行命令,上传下载文件等等。想成为远程运维高手?那就快来学习Paramiko吧!

一、Paramiko简介

Paramiko是一个纯Python实现的SSHv2协议库,它提供了SSH客户端和服务端的功能。这意味着你不仅可以用它连接到远程服务器,还可以用它搭建自己的SSH服务器。它支持密码认证和密钥认证,安全性杠杠的!安装也很简单,直接pip搞定:pip install paramiko

注意事项:  在使用Paramiko之前,确保你的系统已经安装了OpenSSH或其他SSH服务。

二、如何安装

正如上面所说,安装Paramiko非常简单,只需在你的终端中运行以下命令:

1pip install paramiko

注意事项:   如果你使用的是虚拟环境,请确保在正确的虚拟环境中安装Paramiko。

三、基本用法

Paramiko提供了两个核心类:SSHClient 和 SFTPClient。

3.1 SSHClient

SSHClient 用于建立SSH连接并执行命令。

 1import paramiko
2
3client = paramiko.SSHClient()
4client.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 自动添加主机密钥,避免第一次连接时的警告
5client.connect(hostname="your_server_ip", username="your_username", password="your_password")
6
7stdin, stdout, stderr = client.exec_command("ls -l")
8print(stdout.read().decode())
9
10client.close()

注意事项:   将 your_server_ip、your_username 和 your_password 替换成你自己的服务器信息。AutoAddPolicy() 不推荐在生产环境中使用,最好使用已知的host_keys。

3.2 SFTPClient

SFTPClient 用于进行文件传输。

 1import paramiko
2
3transport = paramiko.Transport(("your_server_ip"22))
4transport.connect(username="your_username", password="your_password")
5
6sftp = paramiko.SFTPClient.from_transport(transport)
7sftp.put("local_file.txt""remote_file.txt")  # 上传文件
8sftp.get("remote_file.txt""local_file.txt")  # 下载文件
9
10sftp.close()
11transport.close()

注意事项:   确保本地文件和远程路径存在。

四、高级用法

4.1 使用密钥认证

密钥认证比密码认证更加安全。

 1import paramiko
2
3key = paramiko.RSAKey.from_private_key_file("your_private_key_path")
4client = paramiko.SSHClient()
5client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
6client.connect(hostname="your_server_ip", username="your_username", pkey=key)
7
8# ... 执行命令或文件传输 ...
9
10client.close()

注意事项:   将 your_private_key_path 替换成你的私钥文件路径。

4.2 执行交互式命令

对于需要交互的命令,可以使用invoke_shell()方法。

 1import paramiko
2
3client = paramiko.SSHClient()
4client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
5client.connect(hostname="your_server_ip", username="your_username", password="your_password")
6
7channel = client.invoke_shell()
8channel.send("sudo su\n")
9channel.send("your_sudo_password\n")  #  如果需要sudo权限
10channel.send("some_interactive_command\n")
11
12# ... 处理交互 ...
13
14client.close()

注意事项:   交互式命令的处理比较复杂,需要根据具体的命令进行调整。

五、实际使用案例

使用Paramiko批量管理服务器,例如批量执行命令、分发文件等。

六、总结

今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问风哥哦。祝大家学习愉快,收获满满!

py学习基地ai
分享生活百态,情感故事,了解不一样的人生
 最新文章