OpenWrt 在使用过程中会出现需要添加自定义命令来提升效率,在一段时间摸索以后,我写了以下脚本来实现Frpc内网穿透的需求。
其他Linux系统均可以借鉴,但是文件位置可能稍有不同。

1、创建shell脚本

vi frpc2.sh

2、以下为命令模板以供参考,可自行根据情况修改,键入“i”,进入编辑模式

    #! /bin/sh # 此行需要根据情况修改,因为是生成shell脚本,所以此处用的是 /bin/sh
    #
    # Copyright (C) 2018 aragon 
    #
    # This is free software, licensed under the GNU General Public License v3.
    # See /LICENSE for more information.

    fun_check() { # 检查当前进程状态
    pid=`pidof frpc2` # 寻找进程中名含有frpc2的进程,可根据需要修改进程名
    if [ -n “$pid” ];then
    return 0 # 如果进程不存在则返回0
    else
    return 1 # 如果存在则返回1
    fi
    }

    fun_start() { # 运行frpc程序
    if fun_check; then # 调用fun_check 函数,如果为真
    echo “frpc2 已经在运行。。。” # 不启动程序并提示已经在运行
    else # 如果为假,运行程序
    cd /root/frpc2
    ./frpc2 -c frpc.ini &
    echo “frpc2 启动!!!”
    fi
    }

    fun_stop() { # 停止运行程序
    if fun_check; then # 调用fun_check 函数,如果为真
    killall frpc2 # killall 命令中止所有还含有frpc2的进程,可根据需要修改
    echo “已停止frpc2。。。”
    else # 返回为假则无操作并提示
    echo “frpc2 并未运行。。。”
    fi
    }

    fun_restart() { # 重启程序,其实是先停止再启动
    fun_stop
    fun_start
    }

    fun_status() { # 检查当前进程运行状态
    if fun_check; then
    echo “frpc2 已在运行”
    else
    echo “frp2 并未运行”
    fi
    }

    fun_config() { # 查看当前frpc配置文件
    vi /root/frpc2/frpc.ini
    }

    arg1=$1 # arg1 = 脚本命令后附带的命令内容。如输入 frpc2 start,则 arg1 = start
    [ -z ${arg1} ] # 查看 当前输入的是什么命令
    case “${arg1}” in
    start|stop|restart|status|config) # 如果输入的命令符合则运行指定命令
    fun_${arg1}
    ;;
    *) # 如果输入命令不在有效范围则提示正确指令
    echo “Usage: $SCRIPTNAME {start|stop|restart|status|config}”
    RET_VAL=1
    ;;
    esac #退出case语句
    exit $RET_VAL #退出脚本

3、按“ESC”退出编辑模式,并键入“:wq”保存脚本

4、OpenWrt中输入

chmod +x /root/frpc2/frpc2.sh # 给脚本可执行权限
ln -s /root/frpc2/frpc2.sh /bin/frpc2 # 加入/bin 中,则可以直接使用 frpc2 start等来实现启动命令
ln -s /root/frpc2/frpc2.sh /etc/init.d/frpc2 # 加入/etc/init.d 中,则可以直接使用service frpc2 start等来实现启动命令

以上就是OpenWrt 添加自定命令(以Frpc为例)的全部内容,如果要实现frpc实现开机自启,可以参考这篇文章。

OpenWrt添加开机启动任务