Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Gambinoh en 15 Diciembre 2014, 23:59 pm



Título: Problema con script en bash
Publicado por: Gambinoh en 15 Diciembre 2014, 23:59 pm
El caso es que siempre pense en automatizar ciertas tareas, pero dado que no me he molestado en leer un mísero tutorial de Batch scripting no se como hacerlo.

Este es el script que ejecuto al inicio (está en /etc/init.d/):
Código:
#!/bin/sh

rm -rf ~/.local/share/Trash/*/** &> /dev/null
rm -rf ~/.macromedia/ &> /dev/null

exit 0

Quisiera añadir tambien una orden para ejecutar sqlitebrowser y eliminar las tablas messages y chats del archivo ~/.Skype/user.name/main.db. También quisiera sustituir la ejecución de rm por srm del paquete secure-delete, pero hace falta ejecutarla como superusuario. Por ultimo hacer que todas estas ordenes se ejecuten al apagar o reiniciar el sistema ¿Es posible?


Título: Re: Script "demigrante"
Publicado por: Eleкtro en 16 Diciembre 2014, 00:00 am
El caso es que siempre pense en automatizar ciertas tareas, pero dado que no me he molestado en leer un mísero tutorial de Batch scripting no se como hacerlo.

Pues vas mal encaminado si te da por leer un tutorial de Batch, ya que lo que estás utilizando es Bash, la diferencia es que el primero es para Windows, y el segundo para Linux.

Saludos


Título: Re: Script "demigrante"
Publicado por: Gambinoh en 16 Diciembre 2014, 00:07 am
Ya, tienes razón, ha sido una errata.

Pero creo que has entendido el sentido de las ordenes que quiero ejecutar.

¿Algún consejo menos sarcástico?





Título: Re: Script "demigrante"
Publicado por: Eleкtro en 16 Diciembre 2014, 00:15 am
Ya, tienes razón, ha sido una errata.

Pero creo que has entendido el sentido de las ordenes que quiero ejecutar.

¿Algún consejo menos sarcástico?


No era sarcasmo, solo pretendía evitar que por error leyeras algo que no te serviría, yo no sabia si era una simple errata.

Sobre Bash, no puedo ayudarte, esperemos que alguien te pueda servir de más ayuda.

Saludos!


Título: Re: Script "demigrante"
Publicado por: daryo en 16 Diciembre 2014, 00:26 am
no esta siendo sarcastico , a veces hay gente que copia y pega scripts sin saber que diablos son , tu pregunta tendria mas respuestas en linux.

si se puede el metodo depende si es en systemd y systemv cual distribucion usas?

edito
ok lei y segun tu comentario y con ese directorio que mencionas  es systemv  entonces pon tu script en el directorio para cuando se apaga
Código:
/etc/rc6.d
cuando se reinicia:
Código:
/etc/rc0.d 

y dale permisos de ejecucion
Código:
chmod +x tu script.sh

todos esos scripts se ejecutaran como root


Título: Re: Script "demigrante"
Publicado por: Gambinoh en 17 Diciembre 2014, 07:59 am
Gracias por la ayuda daryo, lamentablemente no se ejecuta.

Renombré el script en /etc/init.d/ a K99Script.sh, le di permisos de ejecución y creé enlaces simbólicos en /etc/rc0.d/ y /etc/rc6.d/.

Citar
sudo mv /etc/init.d/K99Script /etc/init.d/K99Script.sh
sudo chmod +x /etc/init.d/K99Script.sh
sudo ln -s /etc/init.d/K99Script.sh /etc/rc0.d/K99Script.sh
...

¿Qué puede estar fallando?

Mi actual distribución es Ubuntu 12.04.


Título: Re: Script "demigrante"
Publicado por: daryo en 17 Diciembre 2014, 15:57 pm
pues acabo de probar hacer un script y el proceso es el siguiente
lo voy a nombrar bos
el script tiene esta estructura:

Código
  1. #! /bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides:          scriptname
  4. # Required-Start:    $remote_fs $syslog
  5. # Required-Stop:     $remote_fs $syslog
  6. # Default-Start:     2 3 4 5
  7. # Default-Stop:      0 1 6
  8. # Short-Description: Start daemon at boot time
  9. # Description:       Enable service provided by daemon.
  10. ### END INIT INFO
  11.  
  12. # siempre se ejecuta
  13. touch /var/lock/blah
  14. touch /home/rain/blah
  15.  
  16. # Carry out specific functions when asked to by the system
  17. case "$1" in
  18.  start)
  19.    echo "Starting script blah "
  20.    echo "Could do more here"
  21.    ;;
  22.  stop)
  23.    echo "Stopping script blah"
  24.    echo "Could do more here"
  25.    ;;
  26.  *)
  27.    echo "Usage: " $0 " {start|stop}"
  28.    exit 1
  29.    ;;
  30. esac
  31.  
  32. exit 0
lo que esta dentro de start se ejecuta al inicio stop cuando se apaga o reinicia  (los comentarios del inicio son importantes hasta donde dice ### END INIT INFO)

luego ponemos este script en la ubicacion:
Código
  1. /etc/init.d/bos
le doy los permisos necesarios
Código
  1. cd /etc/init.d/
  2. sudo chmod 755  bos
luego para crear automaticamente los enlaces simbolicos en los directorios  rc#.d.
Código
  1. sudo update-rc.d bos defaults

y listo


Título: Re: Script "demigrante"
Publicado por: Gambinoh en 18 Diciembre 2014, 06:37 am
Vale, he seguido los pasos exactos que indicas en tu último mensaje, pero sigue sin ejecutarse al reinicio o apagado. Esta vez no incluí extensión "sh" al nombre del script.

No lo entiendo mi script se ejecutaba antes al inicio, no tenia extensión sh, solo el contenido que indico en el primer post ¿Qué puede estar fallando?


Título: Re: Script "demigrante"
Publicado por: daryo en 19 Diciembre 2014, 04:46 am
lo que quieres borrar esta en el directorio de root porque
cuando pones
Código
  1. rm -rf ~/.local/share/Trash/*/** &> /dev/null
lo hace en el directorio de usuario del root y no tu usuario.incluso si es root prueba usando el directorio completo

si es otro ponlo
Código
  1. rm -rf /home/miusiario/.local/share/Trash/*/** &> /dev/null

tambien
no le pongas K99 sino K01 o usa el comando
update-rc.d

no se no tengo mas ideas xD


Título: Re: Script "demigrante"
Publicado por: MinusFour en 19 Diciembre 2014, 05:26 am
Esos comandos los puedes poner en tu .xsession en tu home (~/.xsession). No hace falta crear un sysvinit script para eso. Encima, creo que el init lo corre root asi que... estaria borrando en el directorio home de root y no de tu usuario.


Título: Re: Script "demigrante"
Publicado por: Gambinoh en 21 Diciembre 2014, 14:56 pm
lo que quieres borrar esta en el directorio de root porque
cuando pones
Código
  1. rm -rf ~/.local/share/Trash/*/** &> /dev/null
lo hace en el directorio de usuario del root y no tu usuario.incluso si es root prueba usando el directorio completo

si es otro ponlo
Código
  1. rm -rf /home/miusiario/.local/share/Trash/*/** &> /dev/null

tambien
no le pongas K99 sino K01 o usa el comando
update-rc.d

BINGO, ¡SOLUCIONADO!

Era exactamente eso, joder, te quiero LOL.