树莓派启动后自动发送本地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 ...
随机推荐
- 在 Windows 上使用VirtualBox 安装 Ubuntu
一.VirtualBox虚拟机软件 之前使用过VMWare,这是第一次尝试使用VirtualBox,记录一下~ 我们可以从官网下载VirtualBox,地址:https://www.virtualbo ...
- py06
元祖tuple 与列表类似可以存多个值,但是不同的是元祖本身不能被修改 #一:基本使用:tuple# 1 用途:记录多个值,当多个值没有改的需求,此时用元组更合适 # 2 定义方式:在()内用逗号分隔 ...
- vscode vue代码模板
{ "Print to console": { "prefix": "vue", "body": [ "< ...
- ScrollView 滚动条
<style name="fa_SlideTabRecyclerView"> <item name="android:scrollbarThumbVer ...
- server配置,IDE,快捷键索引目录
查看内存占用 ps -aux --sort -rss 查看是否运行某个进程,ps -aux | grep xxxxx 查看端口占用 netstat -tunlp | grep 6379 docker ...
- Intel oneAPI 环境变量设置
因工作需要,需要在linux系统配置多个不同环境的库,需要使用environment-modules工具管理环境变量,为保持配置方法的一致性,也使用modulefile文件加载Intel oneAPI ...
- Vulnhub 靶场 HMS?: 1
Vulnhub 靶场 HMS?: 1 前期准备: 靶机地址:https://www.vulnhub.com/entry/hms-1,728/ 攻击机ip:192.168.147.190 靶机ip:19 ...
- select remove option safari 兼容
select 移除某一 option 的 javascript 公司用的代码是 var ddlPrimaryResource = document.getElementById(ddlPrimaryR ...
- android kotlin data class的公共参数解决
kotlin的 data class 不能简略的继承 另一个 data class(要初始化对应父类的值) 尝试使用 sealed class 解决 sealed class CommonParams ...
- 点击dgv某列的单元格时触发事件的方法
private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.Colu ...