Linux远程登录检查磁盘,监视远程磁盘的健康情况的shell脚本

网络是由不同用户的多台主机所组成的。它需要对远程主机的磁盘使用情况进行集中监视。

网络系统管理员需要每天记录网络中所有主机的磁盘使用情况。日志的每一行应该包含日期、主机IP地址、设备、设备容量、占用空间、剩余空间、使用比例、健康状况等细节信息。

如果任何远程主机中的任意分区使用率超过了80%,那么健康状态应该被设置为ALERT,否则就可以设置为SAFT。

本文介绍的脚本,负责收集远程主机的详细信息。需要从网络中每台主机收集磁盘使用情况的统计信息,并写入中央主机的日志文件中。可以将负责收集信息并写入日志的脚本调度为每天执行。

注:SSH可用于登录远程系统收集磁盘的使用数据。有关ssh自动登录的内容,请参考:

linux上ssh配置指南

Linux系统下配置SSH方法

配置ssh,scp自动登陆

ssh,scp自动登陆方法

实现ssh自动登录的四种方法

ssh_config 配置文件详解

使用SSH Key实现安全的密钥证书方式登陆

首先,我们需要在所有网络中的远程主机上设置一个共用的账户。这个账户供脚本disklog登录系统使用。

我们需要为这个账户配置SSH自动登录。我们假设在所有配置了自动登录的远程主机上都有一个叫做test的用户。

例子:

复制代码 代码如下:

#!/bin/bash

# 文件名:disklog.sh

# 用途:监视远程系统的磁盘使用情况

logfile="diskusage.log"

if [[ -n $1 ]]

then

logfile=$1

if

if [ ! -e $logfile ]

then

printf "%-8s %-14s %-9s %-8s %-6s %-6s %-6s %s\n" "Date" "IP ADDRESS" "Device" "Capacity" "Used" "Free" "Percent" "Status" > $logfile

fi

IP_LIST="127.0.0.1 0.0.0.0"

# 提供远程主机IP地址列表

(

for ip in $IP_LIST

do

ssh slynux@$ip 'df -H' | grep ^/dev/ > /tmp/$$.df

while read line;

do

cur_date=$(date +%D)

printf "%-8s %-14s " $cur_date $ip

echo $line | awk '{ printf("%-9s %-8s %-6s %-6s %-8s", $1,$2,$3,$4,$5); }'

pusg=$(echo $line | egrep -o "[0-9]+%")

pusg=${pusg/\%/};

if [ $pusg -lt 80 ];

then

echo SAFT

else

echo ALERT

fi

done< /tmp/$$.df

done

)>>$logfile

我们可以用cron以固定的间隔来调度脚本执行,例如在crontab中加入如此条目,以实现每天上午10点自动运行脚本:

复制代码 代码如下:

00 10 * * * /home/sh/disklog.sh /home/log/diskusg.log

执行crontab -e命令,添加上面一行内容并保存。

cron相关内容,请参考:

不错的crontab教程

linux定时任务设置crontab学习

crontab 命令格式与例子

也可以在需要时手动执行该脚本:

$ ./disklog.sh

该脚本的输出结果示例如下:

1405434579_4854.jpg

注解:

在脚本 disklog.sh 中,我们可以提供日志文件路径作为其命令行参数,否则脚本使用默认的日志文件。

如果日志文件不存在,它会将日志文件头部写入新文件中。

-e logfile用来检查文件是否存在。

远程主机的IP地址列表被存储在变量IP_LIST中,彼此之间以空格做分隔。要确保在IP_LIST中列出的所有远程系统中都有用户test,并且SSH已经配置了自动登录。for循环用来对IP地址进行逐个迭代。通过ssh使用远程命令df -H获取磁盘的剩余空间。这项数据被存储在一个临时文件中,while循环用来逐个读取这个文件。

用awk提取并打印数据,同时一并打印的还有日期。用egrep提取使用率,并将%删除以获取使用率的数值部分。检查得到的数值,看是否超过了80。如果不足80,将状态设置为SAFT;如果大于或等于80,则将状态设置为ALERT。

打印出来的所有数据要被重定向到日志文件中。因此代码被放入了子shell中,并将标准输出重定向为日志文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值