Ubuntu 22.04LTS 服务器客服故障

Ubuntu 22.04LTS 服务器客服故障

我已经在多个 ubuntu 22.04LTS 服务器(仅限 CLI)上测试过它,到目前为止证明它不稳定。我创建了一项新服务,它运行一个 shell 脚本来启动 Palo Alto Networks globalprotect VPN 客户端并自动连接回我们的数据中心。该脚本每分钟循环一次以 ping 数据中心内的 IP 地址,并在发生故障时重新连接 VPN 客户端。我使用代码尝试了几种方法,但到目前为止它还不稳定。有时它可以稳定,直到我重新启动,然后它就不起作用了。服务或脚本正在缓冲 globalprotect 客户端的多个实例,这使其无法再连接到 VPN。这是服务文件:

cat /etc/systemd/system/myVpn.service
[Unit]
Description=My Vpn Connection
Wants=network.target
After=syslog.target network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/myvpn.sh
ExecStop=/bin/sh -c 'globalprotect disconnect'
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

脚本如下:

cat /usr/local/bin/myvpn.sh
#!/bin/bash

#Variables
ping_targets="x.x.x.x"
failed_hosts=""

#Start gp client vpn and log the event
globalprotect connect -p x.x.x.x -u xxxx

echo "myVpn.service: ## Starting globalprotect ##" | systemd-cat -p info

#Check connectivity every minute
while :

do

TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

echo "myVpn.service: ${TIMESTAMP} checking opmgr central reachable over vpn" | systemd-cat -p info

   ping -c 1 x.x.x.x > /dev/null
   if [ $? -ne 0 ]; then
      if [ "$failed_hosts" == "" ]; then
         failed_hosts="x.x.x.x"
      else
         failed_hosts="$failed_hosts, 'x.x.x.x'"
      fi
   fi

if [ "$failed_hosts" != "" ]; then
   globalprotect connect -p x.x.x.x -u xxxx
   echo "myVpn.service: ## Reconnecting due to packet loss ##" | systemd-cat -p info
fi

sleep 60

done

出于安全原因,我删除了用户名和 IP 地址,并用 x 替换它们。我非常感谢任何反馈或建议。当我的第一个测试服务器整个周末都很稳定,而昨天它也失去了 VPN 连接时,这令人沮丧。这是否最好作为 crontab 作业而不是服务来完成?

相关内容