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