由于实验室线路的问题,经常跳闸断电,通电后虽然服务器可以自动开机,但是包括vcenter在内的所有虚拟机都会down掉,为了能够及时的知晓服务器断电,昨天想了个一个办法。就是从从控制机pc入手,首先设置bios将电脑设置为通电自启,然后启动后给我的邮箱发送邮件,这样就能够在服务器重启之后及时的恢复服务。
sendEmail
工具下载
sendemail是一个用来发送邮件的命令行工具,极其轻量和方便。
首先到sendemail的官网下载sendEmail压缩包,Windows有两个版本,一个是包含tls验证,一个没有,这里我们下载有tls验证的版本。
测试sendEmail能否正常使用
将下载下来的压缩包解压到自己想要的目录中,然后用cmd定位到此目录。
然后根据官网的语法说明即可编写相应的命令,这里我们用官网给出的模板直接进行修改:
sendEmail -o tls=yes -f YourEmail@gmail.com -t SomeoneYoureEmailing@domain.com -s smtp.gmail.com:587 -xu YourEmail@gmail.com -xp YOURPASSWORD -u "Hello from sendEmail" -m "How are you? I'm testing sendEmail from the command line."
例子中的说明:
-f YourEmail@gmail.com #发件人邮箱
-t SomeoneYoureEmailing@domain.com #收件人邮箱
-s smtp.gmail.com:587 #发件人邮箱的smtp服务器
-xu YourEmail@gmail.com #用户名
-xp YOURPASSWORD #密码
-u "Hello from sendEmail" #邮件的标题
-m "How are ... line." #邮件的内容
要注意的是发件人邮箱首先要开启stmp服务,如果密码中包含特殊字符,请用双引号包裹一下。
正确的修改之后直接回车,看到successfully就说明发送成功了,如果这时候你并没有在邮箱中收到邮件,那么建议你去垃圾箱看一下。
将命令保存为bat并调用vps执行
为了能让Windows计划任务可以执行,我们将以上的cmd命令写成批处理命令,然后通过vbs调用这个bat,这样就可以将bat的运行过程隐藏了。
编辑bat
新建一个记事本文件,将要在cmd中执行的命令写进去:
@echo off
ping 172.0.0.1 -n 100 #延时执行
f:
cd sendEmail-156
sendEmail -o tls=yes -f YourEmail@gmail.com -t SomeoneYoureEmailing@domain.com -s smtp.gmail.com:587 -xu YourEmail@gmail.com -xp YOURPASSWORD -u "Hello from sendEmail" -m "How are you? I'm testing sendEmail from the command line."
写完之后将记事本的txt格式改为bat,双击执行一下检查是否可以正常收到邮件。我在开头加入一条ping命令是为了延时执行,因为在通电之后并不能立马恢复网络,所以让它在发送100个包之后再去执行下面的命令,这个可根据情况自己选择。
编辑vbs
同样新建一个记事本文件,将以下命令复制进去:
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "d:\sendEmail-156\sendemail.bat",0
然后另存为vbs文件。
添加Windows计划任务
win+r然后输入taskschd.msc打开Windows计划任务。
创建任务
输入任务名称配置改为自己的系统
不要接着点确定,点上面的触发器。
设置触发条件
新建操作
程序选择刚刚写的那个vbs文件,其它设置可以根据情况自己把握。
这样,就可以在系统启动时收到一封邮件提醒了。
感谢您的访问,如果你有什么好的建议或想法,欢迎与我联系:
email:666@cyne.cf
QQ:1543740487