返回

玩转 Python + Shell 巡检服务器:轻松高效,尽在掌握!

后端

利用 Python 和 Shell 自动巡检服务器

在当今快速发展的数字时代,系统巡检已成为确保服务器稳定性和性能至关重要的日常运维任务。传统的手工巡检费时费力且容易出错,而借助 Python 和 Shell 的强大功能,我们可以实现自动化巡检,提高效率,降低失误率。

准备工作

1. Python 环境

  • 安装 Python 3 或更高版本
  • 安装必需的 Python 库,如 paramiko、sshtunnel 和 openpyxl

2. Shell 环境

  • 选择合适的 Shell(如 Bash、Zsh 等)
  • 确保 Shell 已安装并配置

编写巡检脚本

1. 创建巡检脚本文件

  • 使用文本编辑器创建新文件,如巡检.sh

2. 编写巡检脚本内容

  • 根据具体巡检需求,编写 Shell 脚本
  • 巡检脚本应包含以下步骤:
  • 登录系统服务器
  • 执行巡检命令或脚本
  • 获取巡检结果并保存到文件中
#!/bin/bash

# 设置要巡检的服务器列表
SERVERS=(server1.example.com server2.example.com)

# 遍历服务器列表
for SERVER in "${SERVERS[@]}"; do
  # 使用 SSH 连接到服务器
  ssh root@$SERVER <<EOF
    # 在服务器上执行巡检命令
    df -h
    uptime
    free -m
    # 将巡检结果保存到文件中
    echo "巡检结果:" >> $HOME/巡检结果.txt
    df -h >> $HOME/巡检结果.txt
    uptime >> $HOME/巡检结果.txt
    free -m >> $HOME/巡检结果.txt
  EOF
done

3. 设置执行权限

  • 确保巡检脚本文件具有执行权限
  • 使用 chmod +x 巡检.sh 命令设置执行权限

集成 Python 和 Shell

1. 编写 Python 脚本文件

  • 使用文本编辑器创建新文件,如巡检.py

2. 编写 Python 脚本内容

  • 导入必要的 Python 库
  • 定义函数来调用 Shell 巡检脚本
  • 通过循环或其他方式遍历需要巡检的服务器,并调用 Shell 巡检脚本获取巡检结果
  • 将巡检结果保存到文件中
import paramiko

# 设置要巡检的服务器列表
SERVERS = ['server1.example.com', 'server2.example.com']

# 创建 SSH 客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 遍历服务器列表并执行巡检
for SERVER in SERVERS:
  try:
    # 连接到服务器
    client.connect(SERVER, username='root', password='password')

    # 执行巡检脚本并获取结果
    stdin, stdout, stderr = client.exec_command('./巡检.sh')
    results = stdout.read().decode('utf-8')

    # 保存巡检结果到文件中
    with open('巡检结果.txt', 'w') as f:
      f.write(results)
  except Exception as e:
    print(f'巡检服务器 {SERVER} 失败:{e}')
    continue

# 关闭 SSH 客户端
client.close()

3. 运行 Python 脚本

  • 使用 python 巡检.py 命令运行 Python 脚本
  • 脚本将自动调用 Shell 巡检脚本,获取巡检结果并保存到文件中

生成 Excel 文件

1. 安装 OpenPyXL 库

  • 使用 pip install openpyxl 命令安装 OpenPyXL 库

2. 编写生成 Excel 文件的 Python 脚本

  • 使用文本编辑器创建新文件,如生成_excel.py

3. 编写 Python 脚本内容

  • 导入必要的 Python 库,包括 OpenPyXL
  • 定义函数来读取巡检结果文件并将其转换为 Excel 格式
  • 使用 OpenPyXL 库创建新的 Excel 文件并写入巡检结果
  • 保存 Excel 文件
import openpyxl

# 读取巡检结果文件
with open('巡检结果.txt', 'r') as f:
  results = f.readlines()

# 创建新的 Excel 工作簿
wb = openpyxl.Workbook()
sheet = wb.active

# 设置表头
sheet['A1'] = '服务器'
sheet['B1'] = '磁盘使用率'
sheet['C1'] = '系统运行时间'
sheet['D1'] = '内存使用情况'

# 将巡检结果写入 Excel 文件
row = 2
for result in results:
  server, disk_usage, uptime, memory_usage = result.split(',')
  sheet[f'A{row}'] = server
  sheet[f'B{row}'] = disk_usage
  sheet[f'C{row}'] = uptime
  sheet[f'D{row}'] = memory_usage
  row += 1

# 保存 Excel 文件
wb.save('巡检结果.xlsx')

4. 运行 Python 脚本

  • 使用 python 生成_excel.py 命令运行 Python 脚本
  • 脚本将读取巡检结果文件并将其转换为 Excel 格式,并保存为指定的文件名

总结

通过将 Python 和 Shell 集成,我们能够编写自动巡检服务器的脚本。这些脚本可以快速获取巡检结果并生成 Excel 文件,从而提高巡检效率,减少人为失误。运维人员可以将宝贵的时间用于更重要的任务,让服务器保持最佳性能。

常见问题解答

1. 如何定制巡检脚本以满足特定需求?

  • 修改巡检.sh 脚本以包含所需的特定巡检命令或脚本。

2. 如何在不使用 SSH 的情况下巡检服务器?

  • 探索使用其他协议(如 Telnet、WinRM)或开发自定制的代理程序。

3. 如何自动执行巡检脚本?

  • 使用调度工具(如 crontab)定期运行巡检脚本。

4. 如何远程访问需要身份验证的服务器?

  • 在 Python 脚本中使用 paramiko 库提供凭据,或者考虑使用密钥对进行 SSH 认证。

5. 如何处理巡检脚本执行期间的异常情况?

  • 在 Python 脚本中使用异常处理来处理错误,并提供有意义的错误消息。