La Web del Programador: Comunidad de Programadores
 
    Pregunta:  57936 - SCRIPT QUE PUEDA USAR INSTRUCCION DE ROOT
Autor:  Sergio H. Argüello
Saludos a todos estoy empezando a hacer algunos script en Linux Ubuntu 7.04 feisty fawn, pero he querido hacer un script que me descargue una distribucion de Linux pero cuando termine que se apague el ordenador con algo como esto

gwet ftp.algunsitio
shutdown -h

pero el problema es que el comando shutdown tiene que ser el administrador y si dejo la computadora en la noche no hay quien introduzca la clave asi que quisiera que ese comando funcione sin ponerle clave, el gwet funciona bien como usuario normal.

  Respuesta:  Miquel Olavarri
Para concatenar varios comandos en una misma orden lo puedes hacer de dos maneras diferentes dependiendo del comportamiento que desees:

Con "&&":

comando 1 && comando2
De esta manera se ejecutará el comando1 y si éste termina correctamente (sin errores), se ejecutará el comando2.

Con ";":

comando1 ; comando2
De esta manera ejecuta el comando1 y cuando termine, ejecutará el comando2 tanto si el comando1 ha funcionado como si no.


En cuanto a poder ejecutar "shutdown -h" / o "init 0" o cualquier comando que requiere permisos de administrador deberás usar sudo.

Ej: sudo shutdown -h
El problema, tal como comentas, es que el comando sudo te pedirá la contraseña del usuario.

Bueno, pues podemos evitar que te pida contraseña configurando sudo editando el archivo /etc/sudoers donde añadiremos la siguiente línea:

nombredetuusuario ALL = NOPASSWD: shutdown -h

Si queremos que pueda ejecutar cualquier tipo de shutdown, además init 6 i apagar, arrancar y reiniciar apache...

nombredetuusuario ALL = NOPASSWD: shutdown *, init 6, /etc/init.d/apache *

De esta manera puedes ejecutar:

gwet ftp.algunsitio && sudo shutdown -h

(cuando termine de descargar el archivo y sólo si lo ha descargado bien, la máquina se apagará sin pedir password, si la descarga falla, se quedará encendido y así puedes saber si ha fallado y porqué.)

Espero haberte ayudado.

Atentamente, Miquel Olavarria.