Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Gambinoh en 4 Abril 2011, 13:17 pm



Título: Ejecutar un script al apagar el SO y otro al iniciar
Publicado por: Gambinoh en 4 Abril 2011, 13:17 pm
Hola, intenté que se ejecutara al apagar mi sistema operativo Ubuntu un script (de Leo) para borrar los documentos recientes.

Este es el contenido del fichero al que llamé Borrar.sh:

Citar
#!/bin/bash
# Pequeño script para remover "Documentos recientes" en Ubuntu, a lo rapido.
cat "$HOME/.recently-used.xbel" | grep -vi "file:" > "temporal.txt"
mv "temporal.txt" "$HOME/.recently-used.xbel"
exit 0;

Funciona correctamente al invocarlo desde cualquier usuario (sin sudo).

Este es el mismo código añadido a /home/user/.bash_logout:

Citar
# ~/.bash_logout: executed by bash(1) when login shell exits.

#!/bin/bash
# Pequeño script para remover "Documentos recientes" en Ubuntu, a lo rapido.
cat "$HOME/.recently-used.xbel" | grep -vi "file:" > "temporal.txt"
mv "temporal.txt" "$HOME/.recently-used.xbel"
exit 0;

# when leaving the console clear the screen to increase privacy
if [ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi

Pongo el mensaje aquí, porque entiendo que la temática de este foro es la más adecuada para tratarlo.

Mis dudas son si me pasé algo por alto... ¿tengo que darle permisos de ejecución a /home/user/.bash_logout? ¿Dónde falla el código que he puesto?

Resulta que casualmente también he creado otro script, que establece reglas para iptables y necesito que se ejecute al iniciarse el equipo para cualquier usuario... ¿Cuál de estos archivos sería necesario editar "a imagen del ejemplo anterior" (con .bash_logout) para que se ejecute al inicio?

Citar
/etc/profile: común a todos los usuarios que se ejecuta durante el login.
/etc/bash.bashrc: común a todos los usuarios ejecutado durante la invocación de un subshell.
~/.bash_profile, ~/.bash_login o ~/.profile: particular del usuario y se ejecuta durante el login.
~/.bash_logout: particular del usuario y se ejecuta cuando finaliza la sesión.
~/.bashrc: particular del usuario y se ejecuta durante la invocación de un subshell.


Título: Re: Ejecutar un script al apagar el SO y otro al iniciar
Publicado por: leogtz en 4 Abril 2011, 14:32 pm
Lee esto:
http://www.jmarior.net/modules/news/article.php?storyid=161 (http://www.jmarior.net/modules/news/article.php?storyid=161)

Saludos.


Título: Re: Ejecutar un script al apagar el SO y otro al iniciar
Publicado por: Gambinoh en 5 Abril 2011, 01:24 am
Lee esto:
http://www.jmarior.net/modules/news/article.php?storyid=161 (http://www.jmarior.net/modules/news/article.php?storyid=161)

Saludos.

Gracias por la info, lo he leído y al parecer explican muy bien cómo ejecutar un programa "script" al inicio del sistema, de una sesión X de GNOME y al inicio de una sesión Bash... sin embargo no logro ejecutar el script al apagar el equipo. Es decir, añadiendo el script al archivo $HOME/.bash_logout no consigo que se ejecute.

He mirado por Internet otros manuales (un poco por encima), pero simplemente señalan que para que el script se ejecute en el apagado, basta con añadirlo en ~/.bash_logout.

He encontrado esto:

Citar
http://docs.google.com/viewer?a=v&q=cache:0Svk35BygsUJ:www.ucm.es/info/aulasun/archivos/SCRIPTS.pdf+script+se+ejecute+al+apagar+el+equipo+bash&hl=es&gl=es&pid=bl&srcid=ADGEEShFi913fW9psLjkI4NjNDj9FehLp2CDhMQMSbe5Md7eXaZGmFrOxYVuG1pjGKnDVVPekYlHF6n7PEMAT9r36IDegLSbxCXb2vqqIIckOZ8o-o08a16bZBtT32wV7q0ReH9Z9GB6&sig=AHIEtbTQQmsW0PJno2u76VLFo1CX3q9QEQ (http://docs.google.com/viewer?a=v&q=cache:0Svk35BygsUJ:www.ucm.es/info/aulasun/archivos/SCRIPTS.pdf+script+se+ejecute+al+apagar+el+equipo+bash&hl=es&gl=es&pid=bl&srcid=ADGEEShFi913fW9psLjkI4NjNDj9FehLp2CDhMQMSbe5Md7eXaZGmFrOxYVuG1pjGKnDVVPekYlHF6n7PEMAT9r36IDegLSbxCXb2vqqIIckOZ8o-o08a16bZBtT32wV7q0ReH9Z9GB6&sig=AHIEtbTQQmsW0PJno2u76VLFo1CX3q9QEQ)


Título: Re: Ejecutar un script al apagar el SO y otro al iniciar
Publicado por: RyogiShiki en 5 Abril 2011, 01:30 am
Algo más de info, esto es interesante:
http://ubuntuforums.org/archive/index.php/t-1053946.html


Título: Re: Ejecutar un script al apagar el SO y otro al iniciar
Publicado por: Gambinoh en 5 Abril 2011, 01:34 am
Algo más de info, esto es interesante:
http://ubuntuforums.org/archive/index.php/t-1053946.html

Ok, muchas gracias gankutsuo, le echo un vistazo y mañana respondo a ver que tal.


Título: Re: Ejecutar un script al apagar el SO y otro al iniciar
Publicado por: Gambinoh en 5 Abril 2011, 14:37 pm
Vale, he cambiado de estrategia, lo mismo me da que se ejecute el script al apagar el sistema que al iniciarse, así que he eliminado el código del script de $HOME/.bash_logout.

A continuación he creado el archivo /etc/init.d/Borrar.sh con el código siguiente:

Citar
#!/bin/bash
# Pequeño script para remover "Documentos recientes" en Ubuntu, a lo rapido.
cat "$HOME/.recently-used.xbel" | grep -vi "file:" > "temporal.txt"
mv "temporal.txt" "$HOME/.recently-used.xbel"
exit 0;

Y le doy permisos de lectura y ejecución:

Citar
sudo chmod -R u+rx,g+rx,o+rx /etc/init.d/Borrar.sh

Ahora creo los enlaces simbólicos en los diferentes niveles de ejecución:

Citar
cd /etc/init.d/
sudo update-rc.d Borrar.sh defaults

Compruebo con ls que el número correspondiente a la prioridad es único:

Citar
ls /etc/rc2.d/
ls /etc/rc3.d/
...

Se muestra como resultado S21Borrar.sh, S21Borrar.sh, etc...

Reinicio el equipo y no se ejecuta el script :(