需要每天监控服务器的磁盘使用状况,可以使用任务计划,获取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 [email protected]
set smtp=192.168.1.197
set smtp-auth-user=user123
set smtp-auth-password=userpwdxxx
set smtp-auth=login
测试使用方式一
mail [email protected]
先写标题
再写内容
最后按点号键退出
测试使用方式二
echo "abcdefg" | mail -s "邮件标题" -a 附件路径 [email protected],[email protected]
设置crontab脚本
00 08 * * * df -h -x tmpfs -x devtmpfs -x iso9660 --output=avail,pcent,target | column -t -o " - " | mail -s "备份机磁盘使用率" [email protected],[email protected]
获取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 }"
GetDiskUsage.ps1
$DiskUsage = wmic logicaldisk get Description,Caption,FreeSpace,Size,VolumeName
$smtpServer = "mail.163.com"
$smtpUser = "[email protected]"
$smtpPassword = "userpwdxxx"
$mail = New-Object System.Net.Mail.MailMessage
$MailAddress="[email protected]"
$MailtoAddress="[email protected]"
$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
方式二:直接执行ps1文件
在任务计划中设置直接执行powershell的ps1文件
创建任务计划,设置名称、触发器
“操作”设置中,设置动作为ps1脚本,并设置相应参数
(建议勾选下面的“使用最高权限运行”)
程序或脚本
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
添加参数
-WindowStyle Hidden -c D:\tmp\GetDiskUsage.ps1.ps1