有一个文件保存着服务器IP地址,如何Python实现将本机公钥批量发送到服务器
时间: 2024-04-08 20:33:06 浏览: 69
您可以使用Python中的paramiko库来实现将本机公钥批量发送到服务器的功能。下面是一个示例代码:
```python
import paramiko
import os
# 服务器IP地址列表
server_ips = ['192.168.0.1', '192.168.0.2', '192.168.0.3']
# 本机公钥文件路径
public_key_path = os.path.expanduser("~/.ssh/id_rsa.pub")
# 获取本机公钥内容
with open(public_key_path, 'r') as f:
public_key = f.read()
# 遍历服务器IP地址列表
for ip in server_ips:
try:
# 创建SSH客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
client.connect(ip, username='your_username', password='your_password')
# 将本机公钥写入服务器的authorized_keys文件
command = f'echo "{public_key}" >> ~/.ssh/authorized_keys'
stdin, stdout, stderr = client.exec_command(command)
# 打印执行结果
print(f'公钥已成功发送到服务器 {ip}')
# 关闭SSH连接
client.close()
except Exception as e:
print(f'发送公钥到服务器 {ip} 失败: {str(e)}')
```
请确保您已经安装了paramiko库,您可以使用以下命令进行安装:
```
pip install paramiko
```
请注意,上述示例代码中的`your_username`和`your_password`需要替换为正确的服务器用户名和密码。此外,您还需要将`server_ips`列表中的IP地址替换为实际的服务器IP地址列表。
这段代码会将本机的公钥内容读取,并使用paramiko库连接服务器,将公钥内容追加写入服务器的`~/.ssh/authorized_keys`文件中。循环遍历服务器IP列表,逐个发送公钥到每个服务器。
阅读全文