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

acruukt9  于 2023-03-19  发布在  Shell
关注(0)|答案(2)|浏览(339)

我有这样的脚本:

#!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作业或其他一些方式?

注意。运行此脚本时,我需要输入证书密码。因此,考虑到安全性,我不知道应将密码保存在何处以用于自动重新连接目的?

mwecs4sa

mwecs4sa1#

您可以通过检查其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
yrwegjxp

yrwegjxp2#

您可以简单地使用--background--pid-file选项,如下所示:

#!/bin/bash

PID_FILE="OCPID"
CHECK_TIMEOUT=30

function startOpenConnect(){
    echo PASSWORD | openconnect SERVER --servercert=CERT --user=USER --background --pid-file=$PID_FILE --passwd-on-stdin
}

startOpenConnect

while true
do
    # Wait
    sleep $CHECK_TIMEOUT
    # Check if file exists?
    if [ ! -f $PID_FILE ]; then
    startOpenConnect
    fi
done

相关问题