如何创建定期执行 bash 脚本的服务(使用 ssh 连接)

如何创建定期执行 bash 脚本的服务(使用 ssh 连接)

我有一个 bash 脚本,用于检查 ssh 连接lsof。如果连接断开,它会再次打开它。

我找到了一些有关如何创建定期启动的服务的信息,但问题是,每当它启动服务并运行ssh连接时,服务退出后该连接就会终止。

我知道有一个选项,但是执行后RemainAfterExit=yes它将保持服务状态。active

简而言之:

  1. 我想定期启动 bash 脚本
  2. 脚本检查 ssh
  3. 如果隧道关闭,它将启动它(并将其保留在系统中)
  4. 服务需要再次启动,运行脚本进行 ssh 检查

我的服务配置:

[Unit]
Description=Periodically check for ssh tunnel
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=30
User=root
ExecStart=/bin/bash /opt/script.sh -s

[Install]
WantedBy=sysinit.target

编辑:

在我的带有 -s 参数的脚本中,我只是调用函数来检查是否为特定地址建立了 ssh 隧道,如果没有,它就会使用标准 ssh 打开它。

if [[ $(sudo lsof -i -n | egrep '\<ssh\>' | grep "$ip" | wc -l) -gt 0 ]]; then
            INFO "Tunnel is established for IP "$ip"."
            exit 0
else
            ERROR "Tunnel for IP "$ip" has been disconnected. Trying to reconnect."
            ssh -fN [email protected]
fi

相关内容