Asus Merlin开机启动设置与服务脚本编写
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开机启动设置与服务脚本编写相关推荐
- win10启动项_win10 -- 取消不需要的开机启动项和服务项加快win10系统开机速度
电脑开机需要检测的内容多,自然的,开机的速度也就很慢了.通过取消不需要的开机启动项和服务项可以加快win10系统的开机速度. 1.在win10系统的桌面位置,同时按下电脑键盘上的win+r快捷键打开电 ...
- centos7使用命令行查看开机启动项和服务启动状态
centos7使用命令行查看开机启动项和服务启动状态 查看开机启动项 查看单个服务开机启动状态 第一种grep方法 第二种命令行 查看哪些为开机启动的服务 查看开机启动项 systemctl list ...
- CentOS 7.x自定义开机启动设置
一:概述 CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d/的启动脚本的方式就此改变,也大幅提高了系统服 ...
- centos——记录一次开机启动设置
文章目录 设置oracle开机自启 设置java应用开机自启 设置xxljob-admin服务开机自启 设置nginx开机自启 mysql开机自启 开放指定端口 设置oracle开机自启 1.修改or ...
- Windows XP/Vista 开机启动设置项
★注册表项: ⑴HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run ◎◎这个键值应该比较熟悉,常用的系统启动设置项,一般的 ...
- Nginx+Center OS 7.2 开机启动设置(转载)
centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度.关 ...
- linux怎么用命令期启动ngrok,ngrok 开机启动设置
1. 编写ngrok 启动脚本, /path/to/ngrokd -tlsKey=/path/to/server.key -tlsCrt=/path/to/server.crt -domain=&qu ...
- linux weblogic启动目录,Linux下WebLogic开机启动设置
为了方便管理,可以写一个启动脚本用来启动 weblogic,方法如下:用root用户登录Linux,打开目录/etc/rc.d/init.d,新建一个空文本文件,名称改为weblogic (此文件名为 ...
- centos7.5 supervisor +nginx 开机启动设置(实测最有效)以及出现问题思路
都推荐使用yum命令安装(推荐主要是yum安装后一般都会帮你配置好了,下载解压和pip等安装可能需要自己配置相关的东西) 1.安装supervisor同时开机启动 su - #切换为root用户 # ...
最新文章
- jsp 出现cannot be resolved to a type问题解决办法
- 7.20套娃(tao)
- office2007的界面
- 怎么查看XP电脑服务器型号,xp怎么查看电脑配置
- linux中程序包管理方式出现的原由(转载)
- 【信号与系统-可视化】基本信号的产生( Python Numpy和Matplotlib实现)
- 哥德尔 艾舍尔 巴赫--集异璧之大成
- 电路设计基础--MOS管驱动直流电机电路,看懂芯片手册
- 大一java实训报告1500字_java实训报告两篇
- Linux数据库迁移
- openwrt路由表设置_OpenWrt路由器常用设置
- 一级指针, 二级指针
- 这7个关键点,是每个产品用户体验设计的重中之重
- Android灯光系统框架分析
- Campus Talking 小记(3)
- Handler 源码解析——Handler的创建
- 网络-电脑网络突然变成球形, 网络不可用
- 本关任务:编写一个Point类,有x、y两个属性。编写一个PointDemo类,并提供一个distance(Point p1,Point p2)方法用于计算两点之间的距离,实例化两个具体的Point对
- 【Unity3D小工具】Unity3D中实现仿真时钟、表盘、仿原神时钟
- 马尔可夫模型(MC, HMM, POMDP, MOMDP)