2019独角兽企业重金招聘Python工程师标准>>>

Asus Merlin可以编写服务脚本(放在/opt/etc/init.d/*),并设为开机启动,提供定制化的网络任务(如后台下载、缓存服务等等)。这里的方法在Asus Ac86U/Merlin 384.9上运行通过,需要使用U盘存储安装的软件和配置参数。

流程

  • 准备一个16G以上的U盘,格式化为ext4格式,我这里标签设为udata,插入路由器后面的USB接口。

    • 安装完后,部分系统路径会映射到U盘上。
    • ssh登录到路由器系统中,使用ls -l可以直接看到/mnt/udata。
  • 安装 Optiware/Entware 软件包管理程序,需要可写的U盘。
    • 具体参考, https://hqt.ro/how-to-install-new-generation-entware/
    • /opt/etc/init.d为服务程序目录,是在U盘上,因此是可写的。
  • /jffs时路由器自带的可写目录,按照特定格式命名的脚本可以被系统启动时自动调用。
    • 参考,https://github.com/RMerl/asuswrt-merlin/wiki
    • 安装 Optiware后,产生了一个/jffs/service-start文件。
      • 该脚本调用/opt/etc/init.d/rc.unslung。
      • 然后rc.unslung启动/opt/etc/init.d/目录下的所有脚本,使用*.* start参数进行调用。
      • 脚本中运行的进程以服务方式驻留,是Linux早期版本的标准运行机制。
    • 自己的脚本放在/opt/etc/init.d/目录下。
  • 重启路由器,使用ps查看进程。

问题

  • 不要在root/.ssh目录下生成密钥对。

    • /root/.ssh 放在系统的临时目录中,重启后将会丢失!
    • 创建和保存 ssh-key到/opt/etc/ssh,然后使用ssh -i 参数指定绝对位置,如 /opt/etc/ssh/id_dropbear
  • 上传*.pub公钥到需要登录的服务器,并且将其内容加入~/.ssh/authority_keys文件里面。
  • 使用ssh登录时,指定参数 -y -i /opt/etc/ssh/authrority-key
    • -i 用于指定本地 key 文件。
    • -y 指示接受任何外部的host,不验证服务器的安全性。否则会弹出提示,自启动失败。
  • 自动启动,发现虽然进程都存在,但是连接不正常。
    • 手工运行 /opt/etc/init.d/*.* start,查看服务文件是否正确。
    • 如果响应的是service_start,可能网络服务尚未启动,可以设置 sleep 30,等待30秒,再启动自己的服务。

操作

1. 创建key

mkdir /opt/etc/sshcd /opt/etc/ssh
dropbearkey -t ecdsa -f .ssh/id_dropbear_ecdsa | grep "^ecdsa" > .ssh/id_dropbear_ecdsa.pub

2、服务文件

创建service文件,保存到/opt/etc/init.d/,设置为可执行。

chmod +x myservice

参考内容如下:

#!/bin/sh#i=0
#while [ $i -le 20 ]; do
#    success_start_service=`nvram get success_start_service`
#    if [ "$success_start_service" == "1" ]; then
#       break
#    fi
#    i=$(($i+1))
#    echo "autorun APP: wait $i seconds...";
#    sleep 1
#done#=======================
start() {
ssh -K 60 -fNgR 2200:localhost:22 user@public.server.org
logger "Start SSH tunnel for aliyun."#ssh -K 60 -fNgR 20880:LocalServer:80 user@public.server.org
#logger "Run SSH tunnel for JupyterHub notebook."
}#=======================
stop() {
logger "Stop SSHT."
}#=======================
restart() {
logger "Restart SSHT."
}#=======================
enter() {
logger "Enter to some ssht..."
}#======================
status() {
logger "SSHT status."
}case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
enter)
enter
;;
status) status
;;
*)
echo "Usage: (start|stop|restart|enter|status)"
exit 1
;;
esac
echo SSHT Done.
exit 0
EOF

更多模式

  • 远程转发器的服务化和自动化运行。
  • 如果远程节点重启,内部节点连接丢失,需要能够自动重连。
  • 检测节点和链路故障,自动重新恢复连接。
  • 使用多个远程节点和多个内部节点,实现多线容错,以及实现自动切换。
  • 使用dante(sockd/socksify)实现服务,或者socks5代理来实现。

参考:

  • AiMesh/Merlin(梅林)开源固件的DNS使用
  • 在Asus Merlin固件的Dropbear使用及免密登录
  • 如何将内部服务映射到外网可以访问

转载于:https://my.oschina.net/u/2306127/blog/3027989

Asus Merlin开机启动设置与服务脚本编写相关推荐

  1. win10启动项_win10 -- 取消不需要的开机启动项和服务项加快win10系统开机速度

    电脑开机需要检测的内容多,自然的,开机的速度也就很慢了.通过取消不需要的开机启动项和服务项可以加快win10系统的开机速度. 1.在win10系统的桌面位置,同时按下电脑键盘上的win+r快捷键打开电 ...

  2. centos7使用命令行查看开机启动项和服务启动状态

    centos7使用命令行查看开机启动项和服务启动状态 查看开机启动项 查看单个服务开机启动状态 第一种grep方法 第二种命令行 查看哪些为开机启动的服务 查看开机启动项 systemctl list ...

  3. CentOS 7.x自定义开机启动设置

    一:概述 CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d/的启动脚本的方式就此改变,也大幅提高了系统服 ...

  4. centos——记录一次开机启动设置

    文章目录 设置oracle开机自启 设置java应用开机自启 设置xxljob-admin服务开机自启 设置nginx开机自启 mysql开机自启 开放指定端口 设置oracle开机自启 1.修改or ...

  5. Windows XP/Vista 开机启动设置项

    ★注册表项: ⑴HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run ◎◎这个键值应该比较熟悉,常用的系统启动设置项,一般的 ...

  6. Nginx+Center OS 7.2 开机启动设置(转载)

    centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度.关 ...

  7. linux怎么用命令期启动ngrok,ngrok 开机启动设置

    1. 编写ngrok 启动脚本, /path/to/ngrokd -tlsKey=/path/to/server.key -tlsCrt=/path/to/server.crt -domain=&qu ...

  8. linux weblogic启动目录,Linux下WebLogic开机启动设置

    为了方便管理,可以写一个启动脚本用来启动 weblogic,方法如下:用root用户登录Linux,打开目录/etc/rc.d/init.d,新建一个空文本文件,名称改为weblogic (此文件名为 ...

  9. centos7.5 supervisor +nginx 开机启动设置(实测最有效)以及出现问题思路

    都推荐使用yum命令安装(推荐主要是yum安装后一般都会帮你配置好了,下载解压和pip等安装可能需要自己配置相关的东西) 1.安装supervisor同时开机启动 su - #切换为root用户 # ...

最新文章

  1. jsp 出现cannot be resolved to a type问题解决办法
  2. 7.20套娃(tao)
  3. office2007的界面
  4. 怎么查看XP电脑服务器型号,xp怎么查看电脑配置
  5. linux中程序包管理方式出现的原由(转载)
  6. 【信号与系统-可视化】基本信号的产生( Python Numpy和Matplotlib实现)
  7. 哥德尔 艾舍尔 巴赫--集异璧之大成
  8. 电路设计基础--MOS管驱动直流电机电路,看懂芯片手册
  9. 大一java实训报告1500字_java实训报告两篇
  10. Linux数据库迁移
  11. openwrt路由表设置_OpenWrt路由器常用设置
  12. 一级指针, 二级指针
  13. 这7个关键点,是每个产品用户体验设计的重中之重
  14. Android灯光系统框架分析
  15. Campus Talking 小记(3)
  16. Handler 源码解析——Handler的创建
  17. 网络-电脑网络突然变成球形, 网络不可用
  18. 本关任务:编写一个Point类,有x、y两个属性。编写一个PointDemo类,并提供一个distance(Point p1,Point p2)方法用于计算两点之间的距离,实例化两个具体的Point对
  19. 【Unity3D小工具】Unity3D中实现仿真时钟、表盘、仿原神时钟
  20. 马尔可夫模型(MC, HMM, POMDP, MOMDP)

热门文章

  1. python操作统计excel表格,生成新excel表格
  2. 智汀如何连接华为智能音箱?
  3. 【聊天机器人测评】独立站插件用JivoChat和Zendesk哪个好?
  4. 华为云MVP马超:云原生时代开发者的挑战与出路
  5. 我所知道JVM虚拟机之聊聊JVM虚拟机
  6. 数据结构算法_深度优先算法例题(带简易流程图)
  7. 手握5家大厂offer!Android权限处理,吐血整理
  8. 智公网:教师招聘考试题目与答案
  9. C#实现快速排序(通俗易懂)
  10. WIN7显卡硬件加速在哪里设置?