Linux Mint 19.1 시스템에서 OpenVPN 서버에 연결하고 있습니다. 네트워크 관리자가 라우팅을 올바르게 설정하지 않았기 때문에 GUI를 사용하여 연결했으며 다음 명령을 실행하여 연결했습니다.
sudo openvpn --config <config-file.ovpn> &
작업을 더 쉽게 하기 위해 특정 트리 구조를 사용하여 모든 VPN 설정을 숨겨진 폴더에 저장합니다. 어디에서나 호출할 수 있도록 특정 VPN 설정을 사용하여 위 명령을 실행하는 별칭이나 함수를 정의하고 싶습니다.
내 .bashrc에 다음을 추가했습니다.
alias OpenVPN='read -p "VPN name: " VPN_NAME
my_path=~/.openvpn.confs/${VPN_NAME}/OpenVPN
VPN_CONF=${my_path}/vpnconfig.ovpn
sudo openvpn --config $VPN_CONF'
이것은 훌륭하게 작동하지만 실행하는 동안 터미널을 열어 두어야 합니다.인터렉티브모델. 백그라운드에서 시작하고 실행하고 싶기 때문에 마지막 명령에 "&"를 추가했고 터미널에서 수동으로 명령을 호출하면 제대로 작동합니다. sudo openvpn --config $VPN_CONF &
하지만 별칭에 추가하면 시스템은 여전히 백그라운드에서 계속 실행되고 있다고 생각하지만 연결이 작동하지 않습니다.
또한 함수로 실행해 보았지만 연결할 수 없습니다.
OVPN() { sudo openvpn ~/.openvpn.confs/"$@"/OpenVPN/vpnconfig.ovpn & }
이 문제를 해결하는 방법에 대한 제안 사항이 있습니까?
답변1
본 후배경 sudo에 대한 답변입니다.그리고 몇 가지 시행착오를 거쳐 백그라운드에서 명령을 실행하기 전에 사용자 권한을 별도로 확인하여 이 문제를 해결했습니다.
alias OpenVPN='read -p "VPN name: " VPN_NAME
my_path=~/.openvpn.confs/${VPN_NAME}/OpenVPN
VPN_CONF=${my_path}/vpnconfig.ovpn
sudo -v
sudo openvpn --config $VPN_CONF'
여기서는 sudo -v
나타냅니다확인하다, 이는 명령을 실행하지 않고 사용자의 sudo 타임스탬프를 확인하고 업데이트한다는 의미입니다. 이 작업이 완료되면 비밀번호가 이미 제공되었기 때문에 다음 sudo 명령은 비밀번호를 묻는 메시지를 표시하지 않습니다.