使用邮件每日发送磁盘使用率
需要每天监控服务器的磁盘使用状况,可以使用任务计划,获取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脚本,并设置相应参数
(建议勾选下面的“使用最高权限运行”)
程序或脚本
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!