描述
在Openwrt中使用cloudflared,可直接使用二进制文件进行配置。自启动相关脚本参考ubuntu下cloudflared service创建的脚本内容修改而来。
相关资料
配置及脚本
- 安装procps-ng-ps
opkg update && opkg install procps-ng-ps
- 下载cloudflared到/usr/bin下,添加可执行权限
- 创建Openwrt启动脚本
/etc/init.d/cloudflared
,配置token,相关内容如下#!/bin/sh /etc/rc.common # For RedHat and cousins: # chkconfig: 2345 99 01 # description: cloudflared # processname: /usr/bin/cloudflared ### BEGIN INIT INFO # Provides: /usr/bin/cloudflared # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: cloudflared # Description: cloudflared agent ### END INIT INFO name=cloudflared cmd="/usr/bin/cloudflared --pidfile /var/run/$name.pid --autoupdate-freq 24h0m0s tunnel run --token <token>" #replace <token> pid_file="/var/run/$name.pid" stdout_log="/var/log/$name.log" stderr_log="/var/log/$name.err" [ -e /etc/sysconfig/$name ] && . /etc/sysconfig/$name get_pid() { cat "$pid_file" } is_running() { [ -f "$pid_file" ] && ps $(get_pid) > /dev/null 2>&1 } START=99 start() { if is_running; then echo "Already started" else echo "Starting $name" $cmd >> "$stdout_log" 2>> "$stderr_log" & echo $! > "$pid_file" fi } stop() { if is_running; then echo -n "Stopping $name.." kill $(get_pid) for i in {1..10} do if ! is_running; then break fi echo -n "." sleep 1 done echo if is_running; then echo "Not stopped; may still be shutting down or shutdown may have failed" exit 1 else echo "Stopped" if [ -f "$pid_file" ]; then rm "$pid_file" fi fi else echo "Not running" fi }
- 启动服务
/etc/init.d/cloudflared start