백그라운드에서 별칭 또는 함수 실행

백그라운드에서 별칭 또는 함수 실행

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 명령은 비밀번호를 묻는 메시지를 표시하지 않습니다.

관련 정보