openvpnエイリアスのオン/オフ

openvpnエイリアスのオン/オフ

*.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.coIP

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.

おすすめ記事