树莓派4B
具备
- Wi-Fi芯片
- 网线接口
- TF卡接口
没有屏幕怎么办
没有屏幕的情况下想要ssh到树莓派需要
- 联网
- ssh开启
开启网络与ssh
拿到烧录好的TF卡,进入根目录,一般来说是**boot/**。
如果是使用Wi-Fi,那么创建或编辑wpa_supplicant.conf文件,然后在里面写上Wi-Fi配置。
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="你要连接到Wi-Fi名1"
psk="Wi-Fi密码"
key_mgmt=WPA-PSK # 加密方式
priority=1 # 优先级,数字越大优先级越高
}
network={
ssid="你要连接到Wi-Fi名2"
psk="Wi-Fi密码"
key_mgmt=WPA-PSK # 加密方式
priority=1 # 优先级,数字越大优先级越高
}
这样树莓派启动时就会加载这些Wi-Fi信息然后自动连接了。
然后是开启ssh,只需要执行touch ssh生成一个名为ssh文件就可以了。
需要注意的是树莓派启动后这些文件会消失。
我的树莓派呢
在自己掌控的局域网环境下,你能很容易知道树莓派的IP地址,但是离开了自己的地盘怎么拿到树莓派的IP呢。
监控网络变化
只要监控网络变化然后给自己发信息就能知道IP了。
复制下面的网络检测代码,然后在print('Internet is up') # (103行)这里替换自己要触发的代码。
Slack
我使用了Slack接收消息。
- 拥有一个Slack Workspace
- 创建一个Slack App
- 创建WebHook
- 拿到网络信息
- 使用WebHook发送信息
网络信息
我这里使用了psutil库,psutil.net_if_addrs()就可以拿到网络地址相关的信息。
代码
在检测网络的代码里,将需要替换的部分替换为notification.networkIsOn()就行了。
## notification.py
def sendNetworkInfo():
import tools.fetch_info as fetch
info = fetch.networkAddr()
import tools.slack as slack
msg = slack.makeMessage(info)
slack.toSlack(msg)
def networkIsOn():
sendNetworkInfo()
## fetch_info.py
def networkAddr():
import psutil
return psutil.net_if_addrs()
## slack.py
def toSlack(msg):
import requests
url = "你的WebHook"
r = requests.post(url, json=msg)
def makeMessage(content):
fields = []
for k, v in content.items():
field = "*" + str(k) + "*" + "\n" + str(v)
fields.append(field)
return {
"type":"section",
"text":"```" + "\n".join(fields) + "```"
}
开机启动
在文件/etc/rc.local里添加 sudo python3 自定义路径/network_detect.py就可以开机运行该命令了。