Сценарий автоматического подключения / переподключения 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 --user=$NAME $HOST

Это работает, но иногда, если что-то идет не так (перезапуск сервера или другие проблемы), он отключается от VPN. И мне нужно снова запустить скрипт. Есть ли способ, которым я мог бы изменить его или добавить в работу cron или каким-либо другим способом?

Примечание Когда я запускаю этот скрипт, мне нужно ввести пароль сертификата. Итак, учитывая безопасность, мне интересно, где я должен хранить этот пароль для целей автоматического повторного подключения?

2 ответа

Вы можете определить, работает ли openconnect, проверив его PID:

pidof openconnect

Это возвращает значение выхода 0, если openconnect все еще работает, иначе не ноль.

У вас будет скрипт, который выглядит следующим образом [не проверен, но должен дать вам подсказку]:

#!/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
      #!/bin/bash

USER="?"
PASSWORD="?"
SERVER="?"
CERT="pin-sha256:?"
CHECK_TIMEOUT=30


run () {
  # Start openconnect
  echo $PASSWORD | openconnect $SERVER --servercert=$CERT --user=$USER --passwd-on-stdin
}

startOpenConnect


until (run); do
  echo "openconnect exited. Restarting process in $CHECK_TIMEOUT seconds…" >&2
  sleep $CHECK_TIMEOUT
done

Другие вопросы по тегам