使用Python脚本批量管理VPS服务器
文章分类:售后支持 /
创建时间:2026-01-10
同时管理十几台VPS服务器时,逐个登录SSH输入命令的场景是不是很熟悉?手动操作不仅费时费力,输错命令或漏执行的情况也常有发生。这时候用Python写个批量管理脚本,就能让重复操作自动跑起来,大幅提升运维效率。
准备工作
首先需要安装paramiko库——这是Python中常用的SSH连接工具。通过pip命令就能快速安装:
```
pip install paramiko
```
安装完成后,要整理好每台VPS服务器的连接信息,包括IP地址、SSH端口(默认22)、登录用户名,以及密码或密钥文件。这些信息就像服务器的“门牌号”,脚本需要靠它们找到对应的服务器。
编写基础脚本
以下是能实现批量操作的Python脚本示例,核心逻辑是遍历服务器列表并执行指定命令:
```python
import paramiko
# 填入你的VPS服务器信息
servers = [
{'ip': '192.168.1.100', 'port': 22, 'username': 'root', 'password': 'your_password'},
{'ip': '192.168.1.101', 'port': 22, 'username': 'root', 'password': 'your_password'}
]
# 设置要执行的命令,比如查看文件列表
command = 'ls -l'
# 遍历每台服务器执行操作
for server in servers:
try:
# 创建SSH客户端并自动添加主机密钥
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(server['ip'], server['port'], server['username'], server['password'])
# 执行命令并获取输出
stdin, stdout, stderr = ssh.exec_command(command)
result = stdout.read().decode() # 正常输出
error = stderr.read().decode() # 错误输出
# 打印结果或错误信息
if result:
print(f"服务器 {server['ip']} 执行结果:\n{result}")
if error:
print(f"服务器 {server['ip']} 执行错误:\n{error}")
# 关闭连接释放资源
ssh.close()
except Exception as e:
print(f"连接 {server['ip']} 失败:{str(e)}")
```
脚本逻辑拆解
脚本的运行流程就像快递员派件:首先按“服务器列表”这张清单找到每台VPS,用SSH连接“敲门”;连接成功后递上“命令”这个任务,服务器执行完会返回“正常结果”和“错误反馈”;最后把这些信息记录下来,再礼貌“关门”(关闭连接)。如果某台服务器“敲门”失败(连接异常),脚本也会及时报错提醒。
结果自动归档
实际运维中常需要留存操作记录,修改脚本将结果保存到文件即可实现自动归档:
```python
import paramiko
servers = [
{'ip': '192.168.1.100', 'port': 22, 'username': 'root', 'password': 'your_password'},
{'ip': '192.168.1.101', 'port': 22, 'username': 'root', 'password': 'your_password'}
]
command = 'ls -l'
# 打开result.txt文件用于写入结果
with open('result.txt', 'w') as log_file:
for server in servers:
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server['ip'], server['port'], server['username'], server['password'])
stdin, stdout, stderr = ssh.exec_command(command)
result = stdout.read().decode()
error = stderr.read().decode()
# 将结果写入文件
if result:
log_file.write(f"服务器 {server['ip']} 执行结果:\n{result}\n")
if error:
log_file.write(f"服务器 {server['ip']} 执行错误:\n{error}\n")
ssh.close()
except Exception as e:
log_file.write(f"连接 {server['ip']} 失败:{str(e)}\n")
```
比如电商大促前需要批量更新50台VPS的Nginx配置,手动操作可能需要2小时还容易出错,用这个脚本5分钟就能完成,所有执行结果自动存入result.txt,后续排查问题也方便。
掌握这个Python脚本后,不仅能批量执行文件查看、软件安装等基础操作,还能结合crontab设置定时任务,实现VPS服务器的自动化运维。无论是个人站长管理多台业务主机,还是企业运维团队日常巡检,都能通过这种方式大幅降低重复劳动成本。
工信部备案:苏ICP备2025168537号-1