bash - 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 --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

关于bash - OpenConnect 自动连接/重新连接脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27940254/

相关文章:

regex - grep 带有字符串变量和正则表达式

linux - Shell 脚本 - 意外 token `then'

c - PPTP中一个c函数的问题

linux - 如何在网络(VPN 或 LAN)中查找已连接的主机

python - 在 python 和 bash 中限制 glob

node.js - 如何使用 Promisified Node exec 将文本通过管道传输到命令中

linux - Bash:等到 CPU 使用率低于阈值

mysql - 如何使用 shell 脚本在 MySql 数据库中批量插入/更新图像

android adb shell script - 如何拉取所有共享首选项

c - 自己的简单VPN的数据包封装