Después de cada suspensión, cuando reactivo mi computadora portátil, nunca se conecta a ninguna red y tiene que reiniciar NetworkManager nuevamente. Entonces, por pereza escribí este script que funciona bien como se esperaba.
He utilizado un bloque if
para comprobar que el usuario root siempre ejecuta el script:
if [ $(id -u) -ne 0 ] then echo "ERROR : Root Priveleges Required" exit NOT_ROOT else netrestart fi
Y le di a este script este permiso (siendo root al ejecutar este comando):
chmod u+x netrestart
Ahora, cuando ejecuto este script como usuario no root, muestra esto
bash: ./netrestart: Permission denied
Y luego, ejecutar el script con sudo
funciona bien.
sudo ./netrestart
Creo que eso hace inútil la verificación de la raíz en el script. Ahora tengo 2 preguntas:
¿Debo eliminar esa parte del código o seguir utilizándolo en el script?
¿Qué es mejor y cómo?
chmod 755 netrestart
chmod 711 netrestart
Creo que tu guión puede condensarse a:
#!/bin/bash NOT_ROOT=2 sudo service network-manager restart || exit $NOT_ROOT if service network-manager status then echo "Successfully Restarted NetworkManager" else echo "ERROR : Failed to work" exit 1 fi
sudo
verificará el acceso a la raíz para usted y le indicará si es necesario. La verificación de service ... status
le indicará de manera más confiable si NetworkManager se inició normalmente.
Puede otorgar este permiso de ejecución en este script a todos, y sudo
se hará cargo de las comprobaciones de permisos.