python linux系统巡检脚本

这篇具有很好参考价值的文章主要介绍了python linux系统巡检脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用python 实现linux 系统巡检远程获取系统资源情况,导出为excel表格

背景: 因为服务器很多,刚开始一台一台手动巡检,效率很低,于是我想能不能写个工具实现一劳永逸,于是我想到了python ,python 具有丰富的类库,且语言简洁,作为运维使用来说比较方便

上代码

import paramiko
from openpyxl import Workbook,load_workbook
from openpyxl.styles import Alignment
# 建立 SSH 客户端对象
ssh = paramiko.SSHClient()
# 当 SSH 没有被信任时自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 主机清单
host_lst = {'host1': {
    'host': '192.168.31.200',
    'port': 22,
    'user': 'root',
    'password': '123456'
},
 'host2' : {
     'host': '192.168.31.201',
     'port': 22,
     'user': 'root',
     'password': '123456'
}
}

def disk_func(ssh):
    # 获取磁盘使用率
    disk_cmd = "df -h"
    stdin, stdout, stderr = ssh.exec_command(disk_cmd)
    output = stdout.read().decode('utf-8')  # 获取标准输出
    output = output.strip().split("\n")
    disk_info = ''
    # 处理数据,得到最后的磁盘信息
    for line in output[1:]:
        line = [s for s in line.split() if s.strip()]
        if (line[0].startswith("/dev")) and (line[-1] not in ['/boot', '/boot/efi']):
            line_str = f"{line[-1]}: {line[-2]}\n"
            disk_info = str(disk_info) + line_str 

    return  disk_info

def cpu_func(ssh):
    # 获取cpu使用率
    cpu_cmd = "top -bn1 | grep Cpu | awk '{print $8}'"
    stdin, stdout, stderr = ssh.exec_command(cpu_cmd)
    output = stdout.read().decode('utf-8')  # 获取标准输出

    return  "{:.2f}%".format(100 - float(output))

def mem_func(ssh):
    # 获取内存使用率
    mem_cmd = "free"
    stdin,stdout,stderr = ssh.exec_command(mem_cmd)
    #output = stdout.read().decode("utf-8").strip().split("\n")
    output = stdout.read().decode("utf-8")
    out_lst = [i.strip().split() for i in output.strip().split("\n") if 'mem' in i.lower()][0]
    result = float(out_lst[2]) / float(out_lst[1]) * 100
    return "{:.2f}%".format(result)

# 插入巡检结果
def save_excel(info_lst):
    row = ws.max_row + 1
    for i in range(len(info_lst)):
        col = i + 1 
        cell = ws.cell(row=row,column=col)
        if i == 1 :
            cell.alignment = Alignment(wrap_text=True)
        ws.column_dimensions[cell.column_letter].auto_size = True     # 设置列宽适应内容
        ws.row_dimensions[cell.row].height = None                     # 设置行高适应内容

        cell.value = info_lst[i]

              

# 定义一个工作薄
# 实例化
path = 'D:/test/check_linux.xlsx'
sheet = "巡检结果记录"
try:
    wb = load_workbook(path)
except FileNotFoundError:
    wb = Workbook()

# 创建一个sheet
if sheet in wb.sheetnames:
    ws = wb[sheet]
else:
    ws = wb.create_sheet(title=sheet)
    
ws.delete_rows(2, ws.max_row)
ws.merge_cells('A1:E1')
ws['A1'] = sheet
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')

# 插入巡检指标
option_lst = ["ip地址","磁盘使用率","cpu使用率","内存使用率"]

# 行
row = ws.max_row + 1
for i in range(len(option_lst)):
    col = i + 1 
    cell = ws.cell(row=row,column=col)
    cell.value = option_lst[i]



# 执行
for i in host_lst.values():
    host = list(i.values())[0]
    port = list(i.values())[1]
    user = list(i.values())[2]
    password = list(i.values())[3]
    try:
        # 连接远程主机
        ssh.connect(
            hostname=host,
            port=port,
            username=user,
            password=password
        )
        print("SSH connection successful!")
        # 磁盘
        disk_info = disk_func(ssh)
        # cpu
        cpu_info = cpu_func(ssh)
        # 内存
        mem_info = mem_func(ssh)

        print(disk_info)
        print(cpu_info)
        print(mem_info)

        os_lst = [host,disk_info,cpu_info,mem_info]
        save_excel(os_lst)
        
    except Exception as e:
        print(f"SSH connection failed: {e}")
    finally:
        ssh.close()

wb.save(path)
print(f"结果保存在{path}中")

不足之处还望批评指正文章来源地址https://www.toymoban.com/news/detail-812357.html

到了这里,关于python linux系统巡检脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务器巡检脚本(linux)

    2024年02月20日
    浏览(35)
  • SSL 证书过期巡检脚本 (Python 版)

    哈喽大家好,我是咸鱼 之前写了个 shell 版本的 SSL 证书过期巡检脚本 (文章:《SSL 证书过期巡检脚本》),后台反响还是很不错的 那么今天咸鱼给大家介绍一下 python 版本 的 SSL 证书过期巡检脚本 (完整代码在文末) 导入相关模块 首先我们创建一个 domain.txt 用来存放要检

    2024年02月14日
    浏览(26)
  • linux重装系统步骤 包含raid【主要针对服务器重装】,腾讯Linux运维开发面试记录

    8 、查看网关主机名: cat /etc/sysconfig/network 9 、查看单条网卡信息: ethtool 物理网卡名 比如有很多网卡 ,不知道 使用哪个网卡的时候,就用这个方法。 (万兆网Link为yes就是使用的网卡) ​​ 10、查看cpu内存 查看cpu 最简单方法:输入 top 后按 1 即可查看。 查看CPU信息(型号

    2024年04月12日
    浏览(37)
  • Linux实用运维脚本分享

    MySQL备份 目录备份 PING查询 磁盘IO检查 性能相关 进程相关 javadump.sh 常用工具安装 常用lib库安装 系统检查脚本 sed进阶

    2024年02月12日
    浏览(26)
  • 【运维】Linux定时任务 定时执行脚本

    五分钟执行一次sh脚本 进入编辑页面 crontab -e 按Insert   进行编辑  # 每两分钟执行一次 */2 * * * * /usr/local/start.sh 依次按 :wq 进行保存  即时生效 重启 #设定crond服务为开机自启动 接下来,在介绍 crontab 命令。该命令和 at 命令类似,也是通过 /etc/cron.allow 和 /etc/cron.deny 文件来限

    2024年02月10日
    浏览(34)
  • Linux(CentOS)运维脚本工具集合

    备份指定目录 查看CPU、磁盘、内存使用率 返回结果 显示基础信息-详细 查看进程pid,启动时间,持续执行时间 根据进程id查看工作目录 清除Linux系统占用缓存 查看端口是否使用 demo: 查看进程使用的端口 demo 查看端口所在进程 demo 查看目录下各目录占用空间以及最大文件或

    2024年02月12日
    浏览(38)
  • 【运维工程师学习三】Linux中Shell脚本编写

    Shell程序有很多, 如 Korn shell(ksh)、Bourne Again shell(bash)、C shell(包括csh与tcsh) 等等, 各主要操作系统下缺省的shell: AIX下是 Korn Shell Solaris缺省的是 Bourne shell FreeBSD缺省的是 C shell HP-UX缺省的是 POSIX shell Linux缺省的是 Bourne Again shell 但这种在命令行中的命令是即时输出结果的,不

    2024年02月11日
    浏览(57)
  • 基于smardaten无代码开发智能巡检系统,让无人机飞得更准

    话说现在无人机可真的太火了。各个行业都在用无人机做一些业务场景的开拓,典型的像农业施肥撒药、区域环境监测、城市应急调度、以及电站设备远程巡检等等。由于可以装载视频监控,可以远程传输视频画面监测设备、环境等现状,小小的无人机解决了很多远程工作和

    2024年02月13日
    浏览(31)
  • 分享一个提高运维效率的 Python 脚本

    哈喽大家好我是咸鱼,今天给大家分享一个能够提升运维效率的 python 脚本 咸鱼平常在工作当中通常会接触到下面类似的场景: 容灾切换的时候批量对机器上的配置文件内容进行修改替换 对机器批量替换某个文件中的字段 对于 Linux 机器,咸鱼可以写个 shell 脚本或者直接批

    2024年02月03日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包