网络是由不同用户的多台主机所组成的。它需要对远程主机的磁盘使用情况进行集中监视。
本文介绍的脚本,负责收集远程主机的详细信息。需要从网络中每台主机收集磁盘使用情况的统计信息,并写入中央主机的日志文件中。可以将负责收集信息并写入日志的脚本调度为每天执行。
首先,我们需要在所有网络中的远程主机上设置一个共用的账户。这个账户供脚本disklog登录系统使用。
例子:
复制代码代码如下:
#!/bin/bash
logfile="diskusage.log"
IP_LIST="127.0.0.1 0.0.0.0"
while read line;
pusg=$(echo $line | egrep -o "[0-9]+%")
我们可以用cron以固定的间隔来调度脚本执行,例如在crontab中加入如此条目,以实现每天上午10点自动运行脚本:
复制代码代码如下:
00 10 * * * /home/sh/disklog.sh /home/log/diskusg.log
执行crontab -e命令,添加上面一行内容并保存。
该脚本的输出结果示例如下: 如果日志文件不存在,它会将日志文件头部写入新文件中。 -e logfile用来检查文件是否存在。 远程主机的IP地址列表被存储在变量IP_LIST中,彼此之间以空格做分隔。要确保在IP_LIST中列出的所有远程系统中都有用户test,并且SSH已经配置了自动登录。for循环用来对IP地址进行逐个迭代。通过ssh使用远程命令df -H获取磁盘的剩余空间。这项数据被存储在一个临时文件中,while循环用来逐个读取这个文件。 用awk提取并打印数据,同时一并打印的还有日期。用egrep提取使用率,并将%删除以获取使用率的数值部分。检查得到的数值,看是否超过了80。如果不足80,将状态设置为SAFT;如果大于或等于80,则将状态设置为ALERT。 打印出来的所有数据要被重定向到日志文件中。因此代码被放入了子shell中,并将标准输出重定向为日志文件。 (责任编辑:IT) |