Conectando 3 conexões OpenVPN através de um script de shell

1

Para o trabalho, preciso conectar-me a três conexões OpenVPN diferentes todos os dias. Estou usando um script shell para acelerar isso, mas acho que poderia ser feito melhor.

Atualmente meu script é:

#!/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

O Openssl descriptografa um arquivo contendo o nome de usuário e a senha para as conexões, que depois são apagadas depois que as conexões são estabelecidas.

Isso funciona, mas tem alguns problemas:

  • Os cd s repetidos parecem deselegantes.
  • Espero que o comando sleep (que dá tempo ao openvpn para usar o arquivo de login descriptografado) possa ser substituído para que a limpeza ocorra assim que as conexões forem estabelecidas.
  • Eu chamei sudo acima das linhas openvpn, caso contrário, elas parecem se "amontoar" no shell e não dão oportunidade de digitar a senha.

Minha pergunta é: qual seria a melhor maneira de conseguir isso?

    
por Hugh Grigg 葛修远 21.01.2015 / 11:19

1 resposta

1

Eu não tenho 100% de certeza se a combinação de nome de usuário / senha em uma variável funcionará ou não. Definitivamente, isso não ocorrerá se a configuração do sudo exigir uma senha, mas, pelo menos, você pode implementar um loop semelhante a o que está abaixo? Se o armazenamento do nome de usuário / senha na variável funcionar, você não precisará gravar um arquivo com suas credenciais.

#!/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}
    
por 06.02.2015 / 04:05