找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1335|回复: 10

luci请教,界面中的保存与应用按钮是怎么对应到start和stop事件的

[复制链接]
发表于 2021-9-16 21:53 | 显示全部楼层 |阅读模式
我学着写一个VirtualHere的LUCI,界面已经出来了,但按了保存与应用按钮后 /etc/init.d/vhusbd 文件中的 start 和 stop 函数不执行,请教高手,保存与应用按钮怎么对应到这两个函数中呢,保存与应用按了后,程序怎么知道要调用start还是stop呢

是这个文件指定按了后调用哪个文件吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
发表于 2021-9-17 07:17 | 显示全部楼层
我有现成的

#!/bin/sh /etc/rc.common

START=99
USE_PROCD=1
LOGFILE='/var/log/vhusbd.log'
CONFIG='/etc/vhusbd.ini'
PROG='/usr/sbin/vhusbd'

service_triggers() {
        procd_add_reload_trigger "vhusbd"
}

start_instance() {
        config_get_bool enabled "$1" 'enabled' '0'
        config_get ipv6 "$1" 'ipv6' '0'
        config_get syslog "$1" 'syslog' '0'
}

start_service() {
        config_load 'vhusbd'
        config_foreach start_instance 'vhusbd'

        [ "$enabled" -gt 0 ] || return 1

        [ "$ipv6" -gt 0 ] && append OPTIONS "-i"
        [ "$syslog" -gt 0 ] || append OPTIONS "-r $LOGFILE"

        procd_open_instance #启动进程实例 进程必须挂在前台
        procd_set_param command $PROG #执行启动命令
        procd_append_param command $OPTIONS -c $CONFIG
        procd_set_param respawn #启用进程守护
        procd_set_param stdout 1
        procd_set_param stderr 1
        procd_close_instance #关闭进程实例 等同于 CTRL + C
}

点评

关键是我加了 start_service() 接口后,也没有来调用啊,我想知道点了保存和应用后是通过哪个地方来指定调用这里的 start_service() { echo "virtualhere start service">>/tmp/tmp/vhusbd }  详情 回复 发表于 2021-9-17 11:07
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-17 07:42 | 显示全部楼层
本帖最后由 401626436 于 2021-9-17 10:03 编辑

顺便再告诉你
在最新版本中这种启动脚本最好不要后台执行,
不然你会发现只能启动而不能关闭(和终端下后台运行不能在当前窗口关闭一个道理,"由于每个脚本都需要等待返回执行成功的信号,所以当程序置于后台运行脱离窗口控制,它会误以为还未运行导致进程驻留,使其他启动脚本将不会执行"),普通的start和stop虽然容易理解但在新版openwrt却是不太好用的(有可能无响应)无论启动或关闭都会调用start_service所以没必要再多此一举写stop,实在需要用if判断隔开就好了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-9-17 11:07 | 显示全部楼层
401626436 发表于 2021-9-17 07:17
我有现成的

#!/bin/sh /etc/rc.common

关键是我加了 start_service() 接口后,也没有来调用啊,我想知道点了保存和应用后是通过哪个地方来指定调用这里的

start_service() {
    echo "virtualhere start service">>/tmp/tmp/vhusbd
}

点评

USE_PROCD=1  详情 回复 发表于 2021-9-17 12:49
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-17 12:06 | 显示全部楼层
dwj0 发表于 2021-9-17 11:07
关键是我加了 start_service() 接口后,也没有来调用啊,我想知道点了保存和应用后是通过哪个地方来指定 ...

写作要精简,不要添枝加叶,否则会直接无效 你可以/etc/init.d/vhusbd start stop restart status 等等的来测试
你可以没个地方加句echo来看情况
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-17 12:15 | 显示全部楼层
而且如果脚本有误可能会自动禁用,启用后也有重启系统才能在luci页面控制 我的我确定它可以用,你可以复制试试 enadled 都存在 需要修改的只要PROG里的可执行文件路径
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-17 12:49 | 显示全部楼层
dwj0 发表于 2021-9-17 11:07
关键是我加了 start_service() 接口后,也没有来调用啊,我想知道点了保存和应用后是通过哪个地方来指定 ...

USE_PROCD=1
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-17 13:02 | 显示全部楼层
本帖最后由 wulishui 于 2021-9-17 13:05 编辑

这不是来源于我现成的东西么!我东西是可以正常使用的。启动脚本直接使用不就好了!
https://www.right.com.cn/forum/thread-1412911-1-1.html


我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-17 13:12 | 显示全部楼层

复制代码
可正常使用最基本的脚本,其它都是多余的。procd会自动处理stop和start,所以kill进程也不需要,stop不需要,restart也不需要。
  1. #!/bin/sh /etc/rc.common
  2. #wulishui20201217

  3. START=91
  4. USE_PROCD=1

  5. start_service() {
  6.   enabled=$(uci get vhusbd.config.enabled 2>/dev/null)
  7.   if [ "$enabled" == 1 ]; then
  8.         profile=$(uci get vhusbd.config.profile 2>/dev/null)
  9.         procd_open_instance
  10.         procd_set_param command vhusbd -b # -c ${profile} -r /var/vhusbd.log
  11.         procd_set_param respawn
  12.         procd_set_param stderr 1
  13.         procd_close_instance
  14.   fi
  15. }

  16. service_triggers() {
  17.         procd_add_reload_trigger "vhusbd"
  18. }
复制代码

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-17 13:18 | 显示全部楼层
上面是procd基本案例,是万能脚本,随便修改一下就可以创建任意启动脚本。

点评

一直用你的LUCI,用了一年多,谢谢。 但你这个有两个问题: 1.当我点击保存与应用后,运行状态不会更新,要重新刷新网页才会更新。 2.不能自动添加防火墙,导致外网不能访问。 另外,我还想把这个做成一个插件  详情 回复 发表于 2021-9-17 20:30
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-9-17 20:30 | 显示全部楼层
wulishui 发表于 2021-9-17 13:18
上面是procd基本案例,是万能脚本,随便修改一下就可以创建任意启动脚本。

一直用你的LUCI,用了一年多,谢谢。
但你这个有两个问题:
1.当我点击保存与应用后,运行状态不会更新,要重新刷新网页才会更新。
2.不能自动添加防火墙,导致外网不能访问。

另外,我还想把这个做成一个插件,放到feeds里,这样编译的时候可以直接选择。
但不知道怎么回事,不调用接口
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-26 07:04

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表