600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 树莓派配置自动连接wifi ip自动发送到163邮箱

树莓派配置自动连接wifi ip自动发送到163邮箱

时间:2021-12-28 23:57:17

相关推荐

树莓派配置自动连接wifi ip自动发送到163邮箱

实际环境:

在普通场景下我们是无法登陆路由器管理界面查看树莓派ip的,我们该怎么办呢,方法是有的,先让树莓派连接我的手机热点,查看树莓派的mac地址,得到mac地址后再让树莓派连接本地wifi,我们笔记本也连接本地wifi,现在树莓派和笔记本在同一局域网,这时用nmap扫描局域网,找到mac跟树莓派mac相同的ip地址就可以了,实现自动连接wifi后就是将ip发送到163邮箱。

下面我来讲步骤

包含知识点:

自动连接wifi

如何查看自己树莓派的mac,如果在局域网用nmap扫描出自己树莓派的ip地址(mac区分)

开启ssh服务

连接成功后将ip自动发送到163邮箱

1、将刷好 Raspbian 系统的 SD 卡用电脑读取。在 boot 分区,也就是树莓派的/boot目录下新建 wpa_supplicant.conf 文件,按照下面的参考格式填入内容并保存 wpa_supplicant.conf 文件。

country=CNctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1#手机热点network={ssid="vivo Y66" #wifi名字psk="liuww123"#wifi密码key_mgmt=WPA-PSKpriority=2 #连接优先级,数字越大优先级越高(不可以是负数 }#本地wifinetwork={ssid="SZP" #wifi名字psk="sssssss"#wifi密码key_mgmt=WPA-PSKpriority=2 #连接优先级,数字越大优先级越高(不可以是负数 }###### 扩展参数解释network={ssid="WiFi-B"psk="12345678"key_mgmt=WPA-PSKpriority=2scan_ssid=1 #连接隐藏WiFi时需要指定该值为1}

如果你的 WiFi 没有密码

如果你的 WiFi 使用WEP加密

如果你的 WiFi 使用WPA/WPA2加密

如果你不清楚 WiFi 的加密模式,可以在安卓手机上用 root explorer 打开/data/misc/wifi/wpa/wpa_supplicant.conf,查看 WiFi 的信息。

2、开启ssh服务

同样在/boot 下创建名为ssh的空文件,没有扩展名

3、启动树莓派后查看手机热点状态

4、手机关闭热点,让树莓派连接本地wifi,在同一局域网情况下,笔记本利用VMware开启centos虚拟机,网路使用桥接模式

5、在centos下用nmap扫描局域网主机

nmap -sP 172.16.15.0/24 | grep -i -B 2 "b8:27:eb:05:0c:2c"

参数解释 : -i 不区分大小写

-B 2 :输出匹配行前面2行(包含匹配行)

6、用ssh连接到树莓派

树莓派默认账号密码

账号:pi

密码:raspberry

7、修改root用户密码然后以超级管理员登录

sudo passwd root

su - root

8、简单吧,那我们扩展一下,让以后都自动连接多个WiFi网络

多个wifi连接方法

注意:/etc/wpa_supplicant/wpa_supplicant.conf就是我们在/boot目录下创建的文件,启动后/boot 下的那个文件就被删除了,取而代之是现在编辑的文件

第一步:

修改/etc/wpa_supplicant/wpa_supplicant.conf,下面是我使用的配置文件:

ctrl_interface=/var/run/wpa_supplicant#ap_scan=1network={ssid="wo_shi_yige_wifi_ssid"scan_ssid=1psk="wo_shi_mi_ma"priority=5}network={ssid="pi"psk="onlyforpi"priority=1}

**ap_scan:**1是默认值,因此我注掉了1:这个模式下总是先连接可见的WiFi,如果扫描完所有可见的网络之后都没有连接上,则开始连接隐藏WiFi。2:会按照network定义的顺序连接WiFi网络,遇到隐藏的将立刻开始连接,因此在这个模式下连接顺序不受priority影响ctrl_interface:这个文件夹里面存的是一个当前使用的interface的socket文件,可以供其他程序使用读取WiFi状态信息network:是一个连接一个WiFi网络的配置,可以有多个,wpa_supplicant会按照priority指定的优先级(数字越大越先连接)来连接,当然,在这个列表里面隐藏WiFi不受priority的影响,隐藏WiFi总是在可见WiFi不能连接时才开始连接。ssid:网络的ssidpsk:密码priority:连接优先级,越大越优先scan_ssid:连接隐藏WiFi时需要指定该值为1

第二步:

修改/etc/network/interfaces使用wpa_supplicant.conf来配置无线网络

auto loiface lo inet loopbackauto eth0iface eth0 inet dhcpallow-hotplug wlan0auto wlan0iface wlan0 inet dhcppre-up wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B

以后每次启动时,树莓派都会主动去连接配置文件中预定义的这些wifi网络。

单个wifi连接可以使用以下方法

修改/etc/network/interfaces文件,把它修改成这个样子

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet dhcp

allow-hotplug wlan0

auto wlan0

iface wlan0 inet dhcp

wpa-ssid wifi名字

wpa-psk wifi密码

主要是添加wpa-ssid和wpa-psk,直接把你要连接的wifi的ssid和对应密码写上就行了。

其他方式设置见:/playboysnow/p/4987103.html

9、再扩展一下,我们每次不可能获得ip都一样,所以当连接成功后将ip发送到163邮箱。

注意:请使用python3来运行我的脚本

第一步:在/root目录下创建163.py脚本 /root/163.py

# -*-coding:utf-8-*-import smtplib from email.mime.text import MIMEText from email.header import Header import sysSMTPserver=""Sender="自己的163账号@" #写自己的163账号password="密码" #写自己的邮箱密码#类容ip=str(sys.argv)tet=ipprint (tet)msg=MIMEText(tet, 'plain', 'utf-8') #标题msg["Subject"]=Header(u'树莓派IP', 'utf-8').encode()#发件人msg["From"]=Sender #收件人,msg["to"]="自己的163账号@"#也写自己的邮箱账号mailserver=smtplib.SMTP(SMTPserver,25) try:#登录邮箱mailserver.login(Sender,password) #发送邮件mailserver.sendmail(Sender,["自己的163账号@"],msg.as_string()) #也写自己的邮箱账号mailserver.quit() print ("邮件发送成功!")except smtplib.SMTPException:print ("error:邮件发送失败!")

再写shell脚本来判断网络连通性/root/ping.sh,并发送邮件到自己邮箱

#!/bin/bashwhile :doping -c 2 &>/dev/null[ $? -eq 0 ] && breakdonea=`ifconfig wlan0 | grep broadcast`python3 /root/163.py "wlan0:$a"echo "ok"

10、最后就是将脚本加入开启自启程序/etc/rc.local

在exit 0 之前加入如下代码,没有exit就直接加到后面就行

bash /root/ping.sh

测试:

直接拔电源让树莓派重连wifi,看效果

手机端app查看

然后用ssh连接树莓派好像只能先用pi登录,然后才能切换root用户‘

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。