*.ovpn
私のディレクトリに設定リストがあります。/etc/openvpn/ovpn_tcp/
そのディレクトリには、次のbashスクリプトがあります。go
リストからサーバーをランダムに選択して接続するための次のコードが含まれています。
#!/bin/bash
set -- *.nordvpn.com.tcp.ovpn
shift $(( RANDOM % $# ))
openvpn "$1"
次の方法でスクリプトを呼び出すためにエイリアスを作成しました。
alias vpn='bash /etc/openvpn/ovpn_tcp/go'
しかし、しばしばエラーが出ます。
Options error: In [CMD-LINE]:1: Error opening configuration file: *.nordvpn.com.tcp.ovpn
Use --help for more information.
ただし、次のエイリアスで呼び出すと問題なく実行されます。
alias vpn='cd /etc/openvpn/ovpn_tcp/ && bash go'
screen
通常、セッションを開いて接続してからvpn
切断し、完了したら再接続してから接続をCTRL + C
キャンセルするために使用します。vpn
私が探しているのは2
エイリアスを設定することです
1-aliasはセッションを開いたり、現在の端末を使用することなくVPNを開きます。 VPNが接続されたら、view.1-aliasを呼び出して接続されてscreen
いることを確認したいと思います。curl ifconfig.co
IP
2- VPN エイリアシングをオフにします。
ノート:
alias
すでにVPNに接続されている場合は、VPNオープンが実行されるのを防ぎますか?
ベストアンサー1
set
コマンドでフルパスを使用するscreen
飛び込む分割モード- 構文を使用して
case ... esac
起動/停止スクリプトを作成します。
たぶん、次のようなものがあります。
#!/bin/bash
start(){
status # Print IP before connection
set -- /etc/openvpn/ovpn_tcp/*.nordvpn.com.tcp.ovpn
shift $(( RANDOM % $# ))
screen -S vpn -dm openvpn "$1" # connect
sleep 5 # wait for connection
status # Print IP after connection
}
stop(){
screen -S vpn -X quit
pkill -f ovpn
}
status(){
printf 'IP: %s\n' "$(curl -s ifconfig.co)"
}
case "$1" in
start)
if screen -ls | grep -w vpn; then
echo "Vpn already connected";
status
else
start
fi
;;
stop)
stop
;;
*)
status
;;
esac
その後、別名として追加できます。
alias vpn='bash /etc/openvpn/ovpn_tcp/go'
使用法:
# Start connection
vpn start
# Stop connection
vpn stop
# get status
vpn
エイリアスを指定する代わりに、スクリプトを~/bin
.make it 実行可能ファイルに入れ、そのディレクトリを$PATH
.