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