OpenVPNクライアントが接続されたら、次のコマンドを実行します。

OpenVPNクライアントが接続されたら、次のコマンドを実行します。

現在openvpnを使用してリモートネットワークに接続し、端末に「初期化シーケンスの完了」が表示されたら、2番目のウィンドウでスクリプトを実行します。 (パスワードを入力せずにこれをすべて行うことができます。)

$ cat /etc/sudoers.d/openvpn 
ron ALL = NOPASSWD: /usr/sbin/openvpn

xterm 1:

sudo openvpn --config foo.ovpn

xterm 2:

./snaggle.sh

しかし、怠惰なので、これら2つのコマンドを1つにマージしたいのですが、方法がわかりません。私が知っているのはうまくいきません。

sudo nohup openvpn --config foo.ovpn &

編集:foo.ovpnにこのコマンドを追加したときに正しく機能することを確認しました。今後初期化シーケンス完了「現れる:

user ron
group ron
script-security 2
up /home/ron/snaggle.sh

編集2:snaggle.shの内容は次のとおりです。 (重要:時々VPNに接続する必要がある場合があります。いいえこのスクリプトを実行してください。 )

#!/bin/bash

echo $HOME
cd $HOME/work

readonly TS=`TZ=UTC date +"%Y%m%d_%H%M"`
readonly TSHUMAN=`TZ=UTC date +"%F %H:%M %Z"`
readonly OUTFILE=results/prod_cluster_${TS}UTC.txt

for ip in 16 17 18;
do
    node=10.0.83.${ip}
    echo $node
    echo -e "\n\n ${node} \n" >> ${OUTFILE}
    ssh A467197@${node} "bash -s" <<EOF >> ${OUTFILE}
#/bin/bash
mysql -N -e "select 'Uptime is ', mysql.big_time_format(VARIABLE_VALUE) as Uptime from performance_schema.global_status where VARIABLE_NAME='Uptime';"
mysql -N -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster%';"
EOF
done

echo "" | mutt -s "Some private stuff at ${TSHUMAN}" -a ${OUTFILE} -- $(cat email_addrs.txt)

編集3:

OpenVPN 2.3.10 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jun 22 2017
library versions: OpenSSL 1.0.2g  1 Mar 2016, LZO 2.08
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <[email protected]>
Compile time defines: enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes enable_fragment=yes enable_http_proxy=yes enable_iproute2=yes enable_libtool_lock=yes enable_lzo=yes enable_lzo_stub=no enable_maintainer_mode=no enable_management=yes enable_multi=yes enable_multihome=yes enable_pam_dlopen=no enable_password_save=yes enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_socks=yes enable_ssl=yes enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_win32_dll=yes enable_x509_alt_username=yes with_crypto_library=openssl with_gnu_ld=yes with_mem_check=no with_plugindir='${prefix}/lib/openvpn' with_sysroot=no

ベストアンサー1

このディレクティブを使用して、openvpnを介してVPNに接続するときに実行するスクリプトup(初期化プロセス中にさまざまな時間に実行される他のスクリプトも含む)を指定できます。これを行うには、スクリプトセキュリティを設定する必要があります。ファイルに以下を追加するだけですfoo.ovpn

script-security 2
up /path/to/script.sh

あなたの場合はVPN経由で接続する必要があるため、切断前の最後の時間である必要があります。

script-security 2
route-up /path/to/script.sh

snaggle.shこのコマンドが実行されると、openvpnはパケットを処理しないため、このスクリプトは次のように呼び出し側スクリプトにする必要があります。

#!/bin/bash

nohup /path/to/snaggle.sh &

exit 0

接続時にスクリプトを実行するかどうかを選択する必要があるため、これらのオプションをファイルに含めるのではなく、2つの異なる.ovpnファイルを使用するか、コマンドライン引数形式()を使用できます。入力が問題の場合は、エイリアスを作成することもできます。openvpn --config xxx.ovpn --script-security 2 --route-up /path/to/script.sh.ovpnopenvpnsnaggle

コマンドの実行に使用可能な他のオプション(認証後、IPが変更された場合、接続が失われた場合など)の詳細については、次の手順を実行してください。文書

おすすめ記事