我有这样的剧本:
#!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作业或其他方式吗?
Note.运行此脚本时,需要输入证书密码。因此,考虑到安全性,我想知道为了自动重新连接,我应该把密码保存在哪里呢?
发布于 2016-04-13 14:19:48
您可以通过检查openconnect的PID来检测它是否仍在运行。
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
https://stackoverflow.com/questions/27940254
复制相似问题