[Problema] Script executa duas vezes com usuario admin e usuario root

1. [Problema] Script executa duas vezes com usuario admin e usuario root

daniel
danueli

(usa Ubuntu)

Enviado em 28/08/2019 - 09:04h

Boas pessoal

Venho com novo desafio !!

Antes de tudo informo que o usuario Administrador está adicionado ao grupo sudo e adicionado manualmente ao visudo Administrador ALL=(ALL) NOPASSWD:ALL . Já está a funcionar. com isto com o user Administrador executa comando sudo sem perguntar password.

Estou com um problema em que executo o script como user Administrador e verifica se é sudo/root, se não for, re-executa o script com sudo.

script.sh

#!/bin/bash
menu(){
while true
do
clear
echo "$USER"
cat<<EOF
Menu

A - Ola
B - Bom Dia

EOF
read -p "(A/B): " escolha;
case $escolha in
a|A) break ;;
b|B) break ;;
*) echo "Zarolho!!! Errado"
sleep 3 ;;
esac
done
}
verifica(){
echo "verificar se e root"
if [ "$(whoami)" != "root" ]
then
echo "Nao e Root ... Vai executar como root"
sleep 2
sudo su -c "$0" root
else
clear
echo " Agora Sim . ROOT LogaDO"
sleep 1
fi
}
verifica
menu
olabom ## Continua para func 'olabom' quando escolha for correcta
mais ## Contiua para func 'mais' quando termina olabom


Problema detectado e confirmado apos colocaçao de echo "$USER" no inicio do menu.
Apos a reexecução do script como Administrador ele fica a a correr/aguardar por tras. até que o script executado como sudo termine. Pois faço Ctrl-C e vai parar ao menu mas do Administrator.
Era suposto o outro processo ter sido "substituido"?

Estive pensado de uma maneira de contornar isto. talvez colocando uma segunda verificação no inicio do menu. Se for diferente de sudo/root faz exit 1

Ou alguem tem uma ideia melhor?

EDIT:

menu(){
while true
do
clear
echo "$USER"
if [ "$(whoami)" != "root" ]
then
exit 0
fi

cat<<EOF
Menu

A - Ola



Esta foi uma solução temporaria. Apenas termina quando o script executado como root chega ao fim.

Mas não é isto que pretendo.. Mas SIM que terminasse na hora!

Obrigado
Saudações