Estou tentando escrever um script que me conecta às configurações do OpenVPN automaticamente.
Eu consegui automatizar um único login, assim:
#!/bin/bash
cd filepath/
username= "username"
password= "password"
read -sp "Enter Sudo Password: " sudopassword
/usr/bin/expect << EOF
spawn sudo openvpn config-file.ovpn
expect "password for $USER: "
send "$sudopassword\r"
expect "Enter Auth Username: "
send "$username\r"
expect "Enter Auth Password: "
send "$password\r"
expect "$ "
EOF
Eu tenho isso salvo como um script de shell único. Então eu estou simplesmente correndo:
./killvpn
De um arquivo .sh separado para garantir que a conexão VPN anterior seja encerrada:
#!/bin/bash
sudo pkill vpn
Meu script até agora começa em um diretório separado e chama esses scripts para ação assim:
## Project Folder is called: VPN ##
## Filepath: VPN/ ##
#!/bin/bash
./login1.sh
sleep 30m
./killvpn
echo " "
echo "Logging in to VPN2"
echo " "
./login2.sh
sleep 30m
E assim por diante. Meu arquivo ./login2.sh é idêntico a ./login1.sh, no entanto, removi as seguintes seções:
read -sp "Enter Sudo Password: " sudopassword
e:
expect "password for $USER: "
send "$sudopassword\r"
No entanto, ./login2.sh ainda está me solicitando uma senha sudo quando é lançada, apesar do script principal estar pronto para ter privilégios de root. Isso torna o script inutilizável, já que minha conexão VPN seria desativada se eu não estivesse monitorando-a em um terminal aberto.
Alguém poderia ter a gentileza de rever este código e me dizer como executar ./login2.sh sem um prompt sudo, e me ajudar a identificar onde eu errei, por favor?