前言

自动联网脚本,开机启动后自动挂载磁盘,内网穿透服务开机自启等。
以linux服务器自动联网为例,介绍几种方式:

  1. tmux后台运行脚本
  2. crontab 定时任务
  3. systemd 服务

Tmux后台运行脚本

tmux + shell 编写自动操作脚本auto_login.sh。假设 login.sh 为登录脚本:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
while true; do
if ping -c 2 -w 3 www.baidu.com >/dev/null; then
echo 网络正常:`date`
else
echo 网络异常:`date`
echo 执行登录脚本:`login.sh`
fi
sleep 600 # 等待间隔:10min
done

运行 tmux,后台运行程序,每隔 10min 检测一次网络状态。当然也可以用 nohup 运行,通过 nohup 日志查看运行状态。

Crontab 定时任务

crontab 是 Unix 和 Unix 类操作系统中用于设置周期性执行任务的工具。crontab 的名字来自 “cron table”,因为它允许用户编辑一个表格(crontab 文件),用于定义任务的执行计划。Cron 是系统守护进程,它按照 crontab 文件中定义的时间表来执行任务。任务可以是任何可以在 shell 中运行的命令或脚本。

同样地,先编写脚本auto_login.sh,并放到 /srv/network-login 目录下,其中 login.sh 为登录脚本:

1
2
3
4
5
6
7
8
#!/bin/bash
log_file=/srv/network-login/net.log
if ping -c 2 -w 3 www.baidu.com >/dev/null; then
echo 网络正常:`date` >> $log_file
else
echo 网络异常:`date` >> $log_file
echo 执行登录脚本:`/srv/network-login/login.sh` >> $log_file
fi

输入 crontab -e,并添加规则:

1
*/10 * * * * bash /srv/network-login/auto_login.sh

此时系统会每隔 10min 执行一次 login 脚本,每次重启后都会自动执行。

Systemd 服务

待开发