脚本实现检查磁盘空间并发送邮件通知

脚本实现检查磁盘空间并发送邮件通知


1。配置ssh
在本地主机运行ssh-keygen -t rsa 生成公钥id_rsa.pub、秘钥id_rsa
将/root/.ssh/id_rsa.pub拷贝至被监控主机/root/.ssh/下,并重命名为authorized_keys
这样配置,可以在本地直接ssh至远程主机执行命令
ssh 1Array2.168.3.51 du -lh


2. 建立Checksitelist.conf,将所有检查主机IP地址列表
1Array2.168.3.41
1Array2.168.3.51


3。自动发送mail脚本:mailto.sh
#!/bin/sh
function echo_help(){
echo "Usage:"
echo "sh mailto.sh -to mailaddr -file messagefilename [-from frommailaddr] [-subject mailsubject] [-fname showname] [-tname toshowname]"
}
email="
to@toaddress.com
"
emailname="Test Mail"
messagebody="tmp.tmp"
from="
from@fromaddress.com
"
fromname="MailReport"
subject="Mail Report"
until [ $# -eq 0 ]
do
tmpV=$1
if [ $tmpV = "-from" ] ; then
shift
tmpV=$1
from=$tmpV
elif [ $tmpV = "-to" ] ; then
shift
tmpV=$1
email=$tmpV
elif [ $tmpV = "-subject" ] ; then
shift
tmpV=$1
subject=$tmpV
elif [ $tmpV = "-file" ] ; then
shift
tmpV=$1
messagebody=$tmpV
elif [ $tmpV = "-fname" ] ; then
shift
tmpV=$1
fromname=$tmpV
elif [ $tmpV = "-tname" ] ; then
shift
tmpV=$1
emailname=$tmpV
elif [ $tmpV = "--help" -o $tmpV = "-h" ] ; then
echo_help
exit 1
fi
shift
done
if ! test -f ${messagebody} ; then
echo "${messagebody} not exists!"
echo_help
exit 2
fi
echo "begin send..."
echo -e "To: \"${emailname}\" \nFrom: \"${fromname}\" \nSubject: ${subject}\n\n`cat ${messagebody}`" | /usr/sbin/sendmail -t
echo "send OK."


4.磁盘空间检查脚本:checkdisk.sh
conffile=/usr/local/sbin/hdspacecheck/CheckSiteList.conf
date +%Y_%m_%d_%H:%M:%S > /usr/local/sbin/hdspacecheck/today_space.txt ;
echo check disk space result >> /usr/local/sbin/hdspacecheck/today_space.txt ;
for site in `cat $conffile|grep -v ^#`
do
echo -n "test ping $site ...."
ping -c 3 -q -n $site > /dev/null 2> /dev/null
if [ $? -ne 0 ]
then
echo fail
else
echo ok \;
echo check disk space start...
ssh $site ifconfig | awk ’$1=="inet" {print $2}’ | grep 1Array2 >> /usr/local/sbin/hdspacecheck/today_space.txt
echo "--------------------------------------------------------" >> /usr/local/sbin/hdspacecheck/today_space.txt
ssh $site df -lh >> /usr/local/sbin/hdspacecheck/today_space.txt ;
echo "========================================================" >> /usr/local/sbin/hdspacecheck/today_space.txt ;
echo check disk space finished.
fi
done
sh /usr/local/sbin/hdspacecheck/mailto.sh -to
shuqing@uland.com
-file /usr/local/sbin/hdspacecheck/today_space.txt -from
test@test.com
-subject diskspace ;
sh /usr/local/sbin/hdspacecheck/mailto.sh -to
sean@uland.com
-file /usr/local/sbin/hdspacecheck/today_space.txt -from
test@test.com
-subject diskspace ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里提供一份shell脚本实现用户密码到期之前自动重置密码并邮件通知的功能,需要注意的是,该脚本需要root权限才能执行。 ```shell #!/bin/bash # 设置密码过期时间为30天 MAX_DAYS=30 # 获取当前日期 TODAY=$(date +%s) # 遍历所有用户 for USER in $(cut -d: -f1 /etc/passwd); do # 获取用户密码到期时间 EXPIRE=$(chage -l $USER | grep "Password expires" | awk -F: '{print $2}' | sed 's/ //g') # 如果密码过期时间为空则跳过该用户 if [[ -z "$EXPIRE" ]]; then continue fi # 将密码过期时间转换为时间戳 EXPIRE_TS=$(date -d "$EXPIRE" +%s) # 如果密码还有$MAX_DAYS天到期,则重置密码 if [[ $(($EXPIRE_TS - $TODAY)) -le $(($MAX_DAYS * 24 * 3600)) ]]; then # 生成一个随机密码 NEW_PASS=$(openssl rand -base64 12) # 重置用户密码 echo "$USER:$NEW_PASS" | chpasswd # 发送邮件通知用户 echo "Your password has been automatically reset to $NEW_PASS" | mail -s "Password reset" $USER fi done ``` 该脚本实现思路如下: 1. 设置密码过期时间为30天(可以根据实际情况进行修改); 2. 获取当前日期; 3. 遍历所有用户,获取其密码到期时间; 4. 如果密码到期时间为空,则跳过该用户; 5. 将密码到期时间转换为时间戳; 6. 如果密码还有$MAX_DAYS天到期,则重置密码; 7. 生成一个随机密码; 8. 重置用户密码; 9. 发送邮件通知用户。 需要注意的是,该脚本中的邮件通知功能需要系统配置好了邮件服务才能正常使用。如果没有配置邮件服务,可以将邮件通知功能注释掉或者使用其他方式进行通知,比如短信、微信等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值