使用邮件每日发送磁盘使用率

需要每天监控服务器的磁盘使用状况,可以使用任务计划,获取df信息后每天定时发送邮件提醒

linux系统使用邮件发送提醒

检查mail服务安装状态

rpm -qa | grep mail
libreport-plugin-mailx-2.1.11-53.el7.centos.x86_64
mailx-12.5-19.el7.x86_64

编辑发件人配置文件
vi /etc/mail.rc 在文件最后面追加内容

set from=user123@163.com
set smtp=192.168.1.197
set smtp-auth-user=user123
set smtp-auth-password=userpwdxxx
set smtp-auth=login

测试使用方式一
mail user123@163.com
先写标题
再写内容
最后按点号键退出

测试使用方式二
echo "abcdefg" | mail -s "邮件标题" -a 附件路径 user123@163.com,user456@163.com

设置crontab脚本
00 08 * * * df -h -x tmpfs -x devtmpfs -x iso9660 --output=avail,pcent,target | column -t -o " - " | mail -s "备份机磁盘使用率" user123@163.com,user456@163.com

获取df命令信息,设置每天早8点发送提醒邮件
排除部分不需要收集的字段,较低版本的mail命令可能不支持--output参数

windows系统使用邮件发送提醒

方式一:使用bat脚本调用ps1文件

任务计划执行bat批处理脚本,调用另一powershell文件
创建任务计划,设置名称、触发器

“操作”设置中,设置动作为bat脚本,bat脚本调用powershell脚本ps1,ps1脚本中使用wmic命令获取磁盘空间信息并发送邮件提醒

GetDiskUsage.bat

powershell.exe -command ^
  "& {set-executionpolicy Remotesigned -Scope Process; .'.\GetDiskUsage.ps1'" 2>&1 }"

部分低版本操作系统中需要在bat脚本内容最后加一个回车键,否则会执行失败,原因未知

GetDiskUsage.ps1

$DiskUsage = wmic logicaldisk get Description,Caption,FreeSpace,Size,VolumeName
$smtpServer = "mail.163.com"
$smtpUser = "senderuser123@163.com"
$smtpPassword = "userpwdxxx"
$mail = New-Object System.Net.Mail.MailMessage
$MailAddress="senduser123@163.com"
$MailtoAddress="reciveuser456@163.com"
$mail.From = New-Object System.Net.Mail.MailAddress($MailAddress,"系统通知邮件账户senduser123")
$mail.To.Add($MailtoAddress)
$mail.Subject = "应用系统磁盘使用率"
$mail.Body = $DiskUsage|Out-String
$smtp = New-Object System.Net.Mail.SmtpClient -argumentList $smtpServer
$smtp.Credentials = New-Object System.Net.NetworkCredential -argumentList $smtpUser,$smtpPassword
$smtp.Send($mail)
exit

部分较低版本操作系统如server08中wmic命令的get方法会无效,此时可以使用wmic logicaldisk list brief命令来代替

方式二:直接执行ps1文件

在任务计划中设置直接执行powershell的ps1文件
创建任务计划,设置名称、触发器
“操作”设置中,设置动作为ps1脚本,并设置相应参数
(建议勾选下面的“使用最高权限运行”)
image

程序或脚本
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

添加参数
-WindowStyle Hidden -c D:\tmp\GetDiskUsage.ps1

部分较低版本操作系统如server08添加参数时使用-command "& {set-executionpolicy Remotesigned -Scope Process; C:\Batch\GetDiskUsage.ps1" 2>&1 }"

以上方式为通过定时任务实现发送邮件功能,为被动方式
另外可以使用主动检测的方式,参考:https://www.cnblogs.com/caishuaichao/p/18289634

posted on 2024-07-08 15:41  越野兔  阅读(3)  评论(0编辑  收藏  举报

导航