标签搜索

目 录CONTENT

文章目录

树莓派心跳检查

陈铭
2022-08-21 / 0 评论 / 14 点赞 / 398 阅读 / 590 字 / 正在检测是否收录...

最近在写一个项目,通过自己的网站,直接和内网下的树莓派交互,但我又不想直接打开VPN(太麻烦)。所以,我主要是使用Frp来穿透树莓派的ssh服务,然后云服务器只要使用sshpass命令就可不使用交互模式来给树莓派下发shell命名。
但下发命令都需要一个大前提,检测树莓派在线状态!!

搭建简易的心跳接口服务器

import json
from fastapi import FastAPI
import uvicorn

# 创建FastAPI的实例对象
fastApi = FastAPI()
def server():
    uvicorn.run(app=fastApi, host="127.0.0.1", port=<heart_beat_server_port>)

@fastApi.get("/heartBeat")
def heartBeat():
    result={"heartBeat":True}
    return json.dumps(result, ensure_ascii=False)

if __name__ == '__main__':
    server()

最后将其设置为自启动服务:

vim /usr/lib/systemd/system/heartBeat.service

# 内容如下
[Unit]     
Description=heartBeat
After=network.target

[Service]
Type=simple
# python执行上述的服务器脚本
ExecStart=python /root/cm/heartBeat/heartBeat.py
ExecStop=/bin/kill $MAINPID
Restart=always
RestartSec=20
StartLimitInterval=0

[Install]
WantedBy=multi-user.target

使用服务的方式(systemctl start)启动这个服务器

systemctl daemon-reload
systemctl enable heartBeat
systemctl start heartBeat

配置Frp

此时树莓派就有了一个http接口,我们可以用Frp将该接口暴露出去

Frp服务端配置

配置服务端的frps.ini,配置完重启即可,不多赘述

[common]
# <frp_server_listen_port>之前在搭建树莓派VPN那期博客讲过了,就是监听frp服务用的
# <frp_server_listen_http_port>是frp专门用来穿透http服务的暴露端口,后续就是用这个端口在浏览器上访问接口
bind_port = <frp_server_listen_port>
vhost_http_port = <frp_server_listen_http_port>

Frp客户端配置

配置客户端的frpc.ini,配置完重启即可,不多赘述

[common]
server_addr = 159.75.26.246 # 云服务器公网ip
server_port = <frp_server_listen_port> # frp的server端监听端口

[ssh]
# 略,关于ssh服务的内网穿透

[openvpn]
# 略,关于OpenVPN服务的内网穿透

[heartBeat]
type = http # 选择http类型
local_port = <heart_beat_server_port> # 本地心跳接口服务器的监听端口
custom_domains = cmjava.ltd # 云服务器域名

测试

直接访问http://cmjava.ltd:<heart_beat_server_port>/heartBeat,成功访问!!

14

评论区