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.

관련 정보