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

Posted

技术标签:

【中文标题】OpenConnect 自动连接/重新连接脚本?【英文标题】:OpenConnect autoconnect/reconnect script? 【发布时间】:2015-03-12 11:28:23 【问题描述】:

我有这个脚本:

#!bin/bash
NAME="user"
PIDFILE="openconnect.pid"
CERT="user.crt"
KEY="user.key"
PASS="pass"
HOST="https://example.com"
SCRIPT="/etc/***c/***c-script"

openconnect -b --script $SCRIPT --pid-file=$PIDFILE -c $CERT -k $KEY --key-password=$PASS --user=$NAME $HOST

它可以工作,但有时如果出现问题(重新启动服务器或其他一些问题),它会断开与 *** 的连接。我需要再次重新运行脚本。有什么方法可以修改它或将其添加到 cron 作业或其他方式中?

注意。当我运行这个脚本时,我需要输入证书密码。所以考虑到安全性,我想知道我应该将密码保存在哪里以用于自动重新连接?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于OpenConnect 自动连接/重新连接脚本?的主要内容,如果未能解决你的问题,请参考以下文章

无法使 Docker 容器使用 OpenConnect *** 连接

如何强制“OpenConnect”客户端使用 TLS 1.0

linux 下连接 Cisco AnyConnect

如何在 python asyncio 中处理 tcp 客户端套接字自动重新连接?

Openconnect无法连接到网关

sh OpenConnect 7的Autobuild脚本(Ubuntu 14/15/16 trusty / vivid / xenial)