Bash OpenConnect自动连接/重新连接脚本?

Bash OpenConnect自动连接/重新连接脚本?,bash,shell,vpn,openvpn,openconnect,Bash,Shell,Vpn,Openvpn,Openconnect,我有这个剧本: #!bin/bash NAME="user" PIDFILE="openconnect.pid" CERT="user.crt" KEY="user.key" PASS="pass" HOST="https://example.com" SCRIPT="/etc/vpnc/vpnc-script" openconnect -b --script $SCRIPT --pid-file=$PIDFILE -c $CERT -k $KEY --key-password=$PASS -

我有这个剧本:

#!bin/bash
NAME="user"
PIDFILE="openconnect.pid"
CERT="user.crt"
KEY="user.key"
PASS="pass"
HOST="https://example.com"
SCRIPT="/etc/vpnc/vpnc-script"

openconnect -b --script $SCRIPT --pid-file=$PIDFILE -c $CERT -k $KEY --key-password=$PASS --user=$NAME $HOST
它可以工作,但有时如果出现问题(服务器重启或其他问题),它会断开与VPN的连接。我需要再次运行脚本。有什么方法可以修改它,或者在cron作业中添加它,或者其他方法吗


注意。运行此脚本时,我需要输入证书密码。因此,考虑到安全性,我想知道我应该将该密码保存在哪里,以便自动重新连接?

您可以通过检查其PID来检测openconnect是否仍在运行:

pidof openconnect

如果openconnect仍然运行,则返回0的退出值,否则为非零

您可能会有这样一个脚本[未经测试,但应该给您一个提示]:

#!/bin/bash

OPENCONNECT_PID=""
function checkOpenconnect(){
    ps -p "${OPENCONNECT_PID}"
    # print the status so we can check in the main loop
    echo $?
}

function startOpenConnect(){
    # start here open connect with your params and grab its pid
    openconnect [your params] & OPENCONNECT_PID=$!
}

startOpenConnect

while true
do
    # sleep a bit of time
    sleep 30
    OPENCONNECT_STATUS=$(checkOpenconnect)
    [ $OPENCONNECT_STATUS -ne 0 ] && startOpenConnect
done