按量付费服务器忘记停机

之前有一台阿里云按量付费的机器,有次实盘交易完之后,忘记关机了(停机不收费),导致白白被多扣了几天的钱,然后写了个脚本去定时探测服务器当前是开机状态,如果是开机状态的话,给自己发邮件提醒一下。原理很简单,就是ping一下自己的服务器ip,能ping通就是开机状态,Python3写的,配置个定时任务每小时执行一次,感兴趣的可以参考下。

# 提前安装ping3包 pip3 install ping3
from ping3 import ping, verbose_ping
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time

#发邮件给自己
def send_mail(qq_email, qq_email_pwd, subject, content):
  sender = qq_email  
  receivers = [qq_email]  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
  # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
  message = MIMEText(content, 'HTML', 'utf-8')
  message['From'] = Header(qq_email.split('@')[0]+" <"+qq_email+">")
  message['To'] =  Header("自己", 'utf-8')
  subject = subject+'【'+time.strftime('%Y-%m-%d',time.localtime(time.time()))+'】'
  message['Subject'] = Header(subject, 'utf-8')
  smtpObj = smtplib.SMTP_SSL('smtp.qq.com')
  smtpObj.login(qq_email, qq_email_pwd)
  smtpObj.sendmail(sender, receivers, message.as_string())

if __name__ == '__main__':
    #服务器IP
    server_ip = 'xxx.xxx.xxx.xxx'
    #QQ邮箱地址
    qq_email = 'xxx@qq.com'
    #QQ邮箱密码
    qq_email_pwd = 'xxx'
    # 简单用法 ping地址即可,超时会返回None 否则返回耗时,单位默认是秒
    second = ping(server_ip)
    print('it took {} second'.format(second))
    if(second is not None):
        send_mail(qq_email, qq_email_pwd, "windows服务启动中...", "注意...")

邮件提醒

我是用另外一台服务器去探测的"按量付费"服务器是否开启,也可以直接把server_ip改成 www.baidu.com ,然后当前按量付费服务器配置一个定时任务,如果能发出邮件,说明当前处在开机状态。


本站合作开户:A类大型期货公司,客户经理直开,加1分,有交返。联系微信: ITF-0T ,备注:开户。 支持企业开户,企业开户限时奖励中...