Revalidando o usuário para executar um script como sudo sem vários prompts de senha

0

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?

    
por Rui F Ribeiro 18.06.2018 / 00:28

2 respostas

0

A maneira mais fácil de remover o requisito de senha ao usar sudo (sem alterar seu script) é definir seus privilégios de usuário com "nopasswd" em / etc / sudoers:

myuser    ALL=(ALL:ALL) NOPASSWD:ALL

Isso permitiria ao usuário "myuser" executar qualquer comando como root sem solicitar senha.

(Lembre-se de usar o comando 'visudo' para alterar o arquivo sudoers e não editá-lo diretamente).

    
por 18.06.2018 / 02:37
0

Seria mais fácil simplesmente executar o sudo ./yourScript.sh e não continuar solicitando senhas do sudo?

    
por 18.06.2018 / 00:47