树莓派重装系统,连接wifi 到每次登录自动发邮件

我自己有一个树莓派,放那很久硬是没有用到。今天在工作不忙的情况下,梳理一下树莓派的使用。

首先,你需要下载一个树莓派的镜像文件。树莓派下载链接,

树莓派首先需要把你下载的这个系统烧到一个cf卡里面,其实就是写到cf卡上。这个各个系统有专门的软件。

我主要分享的写完硬盘之后的树莓派的操作。

如果你有hdmi线,这种情况是最好的。你就直接接上显示器,就可以配置了。如果没有,就需要网线的方式,比较复杂。需要提前写一个ssh的空白文件到根目录中。

我之前用网线的时候,按其他人的教程操作,找到树莓派的ip,连上过。但是我当时下载的那个版本树莓派是有bug的,所有wifi一直开不起来。然后就放那了。这次直接用的就比较新的镜像,bug已经被修复了。

如果你下载的是官方的镜像,初始的用户名和密码分别是

user: pi
passwd: raspberry

连接上以后,我们首先打开ssh服务。

sudo systemctl enable ssh
sudo systemctl start ssh

然后就是wifi了。
配置wifi的文件是 /etc/wpa_supplicant/wpa_supplicant.conf
我们使用vim打开它。

sudo vim /etc/wpa_supplicant/wpa_supplicant.conf

打开之后,直接把你的wifi密码和用户名加入即可。类似下图这样的。
添加自己wifi的样式
最上面这行你默认就有,你只需要仿照我写的network,把network里面的ssid和psk对应的值写成你连接的wifi名字和wifi密码即可。

到这里的时候,wifi就配置好了。如果不更换wifi,或者wifi不重启,看到这里就可以结束了。
因为我没有显示器,我用的公司的显示器。所以我不能每次都连上显示器来看ip地址。所以有一个很麻烦的问题就出来了。我怎么知道我的ip地址变成多少了?每次开机的时候,连上wifi通知我一下就行了,于是我想到了发邮件的方式。

最开始用的腾讯的邮箱,然后还没怎么操作就被封了。就换了163的邮箱。效果很好。这里我贴一下代码,供大家参考

#!/usr/bin/python3

import smtplib
from email.mime.text import MIMEText
import socket
import requests
from email.header import Header


def get_ip_address():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("1.1.1.1", 80))
    ipaddr = s.getsockname()[0]
    print(ipaddr)
    s.close()
    return ipaddr

# 第三方 SMTP 服务
mail_host = "smtp.163.com"  # 设置服务器, 这个如果是qq, 就把163改成qq即可。
mail_user = "[email protected]"  # 用户名, 这里必须得是你的邮箱。
mail_pass = "XXXXXXXX"  # 口令,这里填的不是密码,是你的客户端授权码。如果报错,多半是这里的

ipaddr = get_ip_address()
sender = '[email protected]'   # 发送者
receivers = ['[email protected]']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

message = MIMEText('本次连接之后的ip为{}'.format(ipaddr), 'plain', 'utf-8')
message['From'] = Header("树莓派ip更新", 'utf-8')
message['To'] = Header("树莓派ip更新完成", 'utf-8')

subject = '树莓派wifi密码更新提示'
message['Subject'] = Header(subject, 'utf-8')


# 检查当前是否连上wifi
def check_network():
    while True:
        if requests.get("http://www.baidu.com").status_code == 200:
            print('Network is ready!')
            break
        else:
            print("newwork is not ready. Sleep 3s...")
            time.sleep(3)
    return True


try:
    check_network()
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)  # 25 为 SMTP 端口号
    smtpObj.login(mail_user, mail_pass)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print ("邮件发送成功")
except smtplib.SMTPException:
    print ("Error: 无法发送邮件")
except Exception as e:
    print(e)

参考:

http://shumeipai.nxez.com/download
https://www.cnblogs.com/shubin/p/7746399.html

你可能感兴趣的:(python)