树莓派启动后自动发送本地IP 到指定邮箱

在 /etc/init.d 目录下建立 GetLocalip.py 文件
#coding: utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import socket
from datetime import datetime
import threading # 获取本地ip
def get_host_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
# 发送邮件
def Send_email():
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
#收件人和发件人
receiver = 'x@qq.com'
sender = 'xx@qq.com'
#发件人邮箱的SMTP服务器(即sender的SMTP服务器)
smtpserver = 'smtp.qq.com'
#发件人邮箱的用户名和授权码(不是登陆邮箱的密码)
username = 'xx@qq.com'
password = '' #(83xxxx202@qq.com邮箱的授权码或者密码)
mail_title = 'IP 地址'
mail_body = get_host_ip() #创建一个实例
message = MIMEText(mail_body +"\n 时间:"+ datetime.now().strftime("%Y-%m-%d %H:%M:%S") , 'plain', 'utf-8' ) #邮件正文
# (plain表示mail_body的内容直接显示,也可以用text,则mail_body的内容在正文中以文本的形式显示,需要下载)
message ['From'] = sender #邮件上显示的发件人
message['To'] = receiver #邮件上显示的收件人
message['Subject'] = Header( mail_title, 'utf-8' ) #邮件主题
smtp = smtplib.SMTP() #创建一个连接
smtp.connect( smtpserver ) #连接发送邮件的服务器
smtp.login( username, password ) #登录服务器
smtp.sendmail( sender, receiver, message.as_string() ) #填入邮件的相关信息并发送
smtp.quit() if __name__ == "__main__":
# print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
timer = threading.Timer(2, Send_email)
timer.start()
# Send_email()
现在功能基本实现了 ,那么需要树莓派 开机后就执行个文件
编写 一个shell 脚本
#! /bin/sh
python /etc/init.d/GetLocalip.py # 这里需要注意需要用绝对路径
echo "send_ip_mial OK !"
exit 0 ;
我们开机后要调用 shell 脚本 之后调用到我们的 GetLocalip.py 文件
还需要将 shell 文件注册成服务 进入 /etc/systemd/system 目录下
创建 send_mail_ip.service
[Unit]
Description=Send_mail_ip #将本地ip地址发送到指定邮箱
After=network.target # 这里填上你这个脚本所需要的前置service,都在/etc/systemd/system/下【这一项可以不写】 [Service]
ExecStart=/etc/init.d/send_mail.sh
Type=simple
EnvironmentFile=-/erc/init.d/send_mail.sh
ExecReload=sh /etc/init.d/send_mail.sh
KillMode=process
RestartSec=3s
Restart=on-failure [Install]
WantedBy=multi-user.target
重新载入systemd 服务 systemctl daemon-reload
设置开机自启 systemctl enable send_mail_ip.service
启动 systemctl start send_mail_ip.service
查看状态 systemctl status send_mail_ip.service

参考:
Systemd 添加自定义服务(开机自启动) https://www.cnblogs.com/jhxxb/p/10654554.html
树莓派启动后自动发送本地IP 到指定邮箱的更多相关文章
- python实现树莓派开机自动发送IP到指定邮箱
#!/usr/bin/python # -*- coding:UTF-8 -*- #测试发送邮件163邮箱发送到qq邮箱 import smtplib from email.mime.text imp ...
- CentOS - 开机自动发送IP到指定邮箱 - smtp.163.com
1.简介: 服务器有时候是通过DHCP方式获取IP,一般服务器连个网线和电源就好了,要是每次开机还得连个显示器和键盘看看IP是多少就很不方便.懒人就让它自动发送个邮件.这里采用CentOS,163邮箱 ...
- tomcat启动后,跳转到项目指定页面
- Tomcat安装后,远程IP无法访问的问题。
我在使用阿里云与聚石塔的时候,发现Tomcat启动后,本地可以访问,但是外网无法访问,即使关闭防火墙也无法访问. 原因是 云平台的网络拦截. 阿里云:有一个入网规则 和 出网规则 ,流入数据端口 流 ...
- 本地计算机 上的 OracleOraDb11g_home1TNSListener 服务启动后停止
今天玩oracle的时候突然遇到一个问题:本地计算机 上的 OracleOraDb11g_home1TNSListener 服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止. 在网上找解决 ...
- Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
一.错误描述 登陆PL/SQL Developer登陆本地数据库时先报没有监听程序,查看服务发现Oracle监听服务没有启动.右击启动监听程序,报错: 错误描述:本地计算机上的OracleOraDb1 ...
- (转)解决:本地计算机 上的 OracleOraDb10g_home1TNSListener服务启动后停止
原文地址:http://justsee.iteye.com/blog/1320059 手动启动一个问题:本地计算机 上的 OracleOraDb10g_home1TNSListener服务启动后停止. ...
- 本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。——Oracle监听器服务无法启动!
问题: oracle服务设置为手动启动.但是开机后手动启动监听服务后弹出框,提示“本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止.某些服务在未由其他服务或程 ...
- 转 Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
今早刚上班.客户打电话过来说系统访问不了,输入用户名.用户号不能加载出来!听到这个问题,第一时间想到的是不是服务器重新启动了,Oracle数据库的相关服务没有启动的原因.查看服务的时候,发现相关的服务 ...
- 域名可以解析(ping域名可以获取正确ip),服务器本地telnet 域名+端口 无法连接,通过建立本地虚拟域名指定的方法解决该问题
环境: 服务器A,网管已为A开通外网ip,且设置有映射域名:假如内网ip为172.16.2.6.外网ip为123.123.123.123.域名为test.sstest.com 现象: 服务器A,tel ...
随机推荐
- mongodb-命令小结
小白暂时在这里记录些涉及到的 在某条记录添加一个字段: 先查询_id: db.subscriptions.find({"channel":"parking.notify. ...
- 3月1日至3月2日——数据结构与算法分析阅读笔记,线性表,AI。
(开头是一些废话啊,最近感觉学习状态不太好,上高数的时候左耳听进去右耳就出来了,有点跟不上,可能是没吃饭的原因,也可能是最近强度有点大了,下午上完课就给自己休息了一下,结果刷手机全是关于AI的内容,谢 ...
- P1219 [USACO1.5]八皇后 Checker Challenge
好长时间没登博客园了,今天想起了账号密码,遂发一篇题解 最近因为复赛正在复健搜索,所以做了这道题 这道题说难并不是很难,但是在于这个题需要找到两个规律 以下是原题 [USACO1.5]八皇后 Chec ...
- 赤菟V307与Matlab的串口通信
赤菟V307与Matlab的串口通信 赤菟V307(CH32V307)是一款RISC-V内核的MCU,搭载的是沁恒自研RISC-V内核青稞V4F,最高主频144MHz,支持单精度浮点运算(FPU). ...
- 安装zookeeper 和 kafka
本文用到的同步脚本 https://www.cnblogs.com/sdgtxuyong/p/16907986.html 一 . 安装zookeeper 修改hosts文件,将test1,test ...
- guide, manual, tutorial之间的区别
总结:一般而言,guide表示用户指南,提供简要的信息:manual表示用户手册,提供较为完整深入的说明:tutorial表示教程,提供详细的说明,侧重于给没有经验的人一步一步进行详细的指导.实际情况 ...
- Python——01.环境及安装
Python介绍 -- Python是解释型,面向对象的语言,程序结构简洁,清晰 -- Python解释器分类: CPython(官方解释器):用C语言编写的Python解释器 PyPy:用Pytho ...
- hive安装准备 (mysql8.0安装)
1.先准备好安装的所需材料 2.开始准备安装 先安装mysql 解压命令:tar -xvJf (注意:这里' j '是大写) 解压后改名: mv mysql-8.0.24-linux-glibc2. ...
- 暴雪、迪士尼大佬用什么画画?RayLink远控软件助力解锁远程创作
CG绘画从业者,如原画师.插画师.漫画家.设计师等,一定对数位板\数位屏不陌生,数位板\数位屏是完成CG绘画作品的重要绘图工具之一. 从画画小白到数字绘画大神,从0基础插画培训班学生到国际知名游戏.动 ...
- 'umi' 不是内部或外部命令,也不是可运行的程序 或批处理文件或umi: command not found
问题 'umi' 不是内部或外部命令,也不是可运行的程序 或批处理文件或umi: command not found 解决方法 参考链接:https://blog.csdn.net/weixin_40 ...