쉘 스크립트를 통해 3개의 OpenVPN 연결 연결

쉘 스크립트를 통해 3개의 OpenVPN 연결 연결

업무상 매일 3개의 다른 OpenVPN 연결에 연결해야 합니다. 작업 속도를 높이기 위해 쉘 스크립트를 사용하고 있지만 더 잘할 수 있을 것 같습니다.

현재 내 스크립트는 다음과 같습니다

#!/bin/bash

cd ~/vpns
sudo openssl aes-128-cbc -d < login.conf.aes > login.conf

cd ~/vpns/live_vpn
(sudo openvpn --config config.ovpn --auth-user-pass ~/vpns/login.conf) &
cd ~/vpns/mgmt_vpn
(sudo openvpn --config config.ovpn --auth-user-pass ~/vpns/login.conf) &
cd ~/vpns/test_vpn
(sudo openvpn --config config.ovpn --auth-user-pass ~/vpns/login.conf) &

cd ~/vpns
sleep 20
wipe -f login.conf

Openssl은 연결에 대한 사용자 이름과 비밀번호가 포함된 파일을 해독한 다음 연결이 설정된 후 삭제합니다.

이것은 작동하지만 몇 가지 문제가 있습니다.

  • 반복되는 cds는 보기에 좋지 않습니다.
  • sleep연결이 설정되자마자 삭제가 발생하도록 명령(해독된 로그인 파일을 사용할 openvpn 시간을 제공하는)을 대체할 수 있었으면 좋겠습니다 .
  • openvpn 라인 위에서 호출을 했습니다 sudo. 그렇지 않으면 쉘에 "스택"된 것처럼 보이고 비밀번호를 입력할 기회가 없습니다.

내 질문은: 이것을 달성하는 더 좋은 방법은 무엇입니까?

답변1

사용자 이름/비밀번호 조합을 변수에 저장하는 것이 작동하는지 100% 확신할 수 없습니다. sudo 구성에 비밀번호가 필요한 경우 확실히 작동하지 않지만 최소한 아래와 유사한 루프를 구현할 수 있습니다. 사용자 이름/비밀번호를 변수에 저장하는 것이 실제로 작동한다면 자격 증명을 사용하여 파일을 작성할 필요가 전혀 없습니다.

#!/bin/bash
VPNDIR=${HOME}/vpns
CONFIG=${VPNDIR}/login.conf
OCWD=${PWD}

cd ${VPNDIR}
OLDIFS=${IFS} ; IFS=''
CREDS="$(openssl aes-128-cbc -d < login.conf.aes)"
IFS=${OLDIFS}

for Z in live_vpn mgmt_vpn test_vpn; do
   cd ${VPNDIR}/${Z}
   (printf "${CREDS}\n" | sudo openvpn --config config.ovpn --auth-user-pass) &
done

unset CREDS
cd ${OCWD}

관련 정보