Para que se auto ejecute un script al arrancar Linux
Muy buenas: Tengo escrito un script para las iptables, y me gustaría que se ejecutase directamente al arrancar la máquina. He probado a copiarlo en las carpetas rc.d, pero no funciona. A ver si alguien puede echarme un cable... Un saludo. Juan
Juan:
Yo tenia probs con lo mismo y entonces puedes hacer algo poco ortodoxo....
ejecuta el script de IPTABLES desde el archivo de inicio de algun otro
servicio que tengas configurado al arranque, Yo tengo el iptables que
ejecute cuando inicie el mysql, el cual se levanta al inicio. Echate un
clavado en el archivo /etc/init.d/mysql o cualquier otros servicio que se
te levante al inicio y busca dentro el "case" principal y clava tu script en
la primera opcion "1", e aqui un ejemplo:
case "$1" in
start)
/etc/rc.d/./iptables start # <<=== el script de IPTABLES
# exit gracefully, if we are already running
checkproc $MYSQLD && echo -n "Starting service MySQL" && \
rc_status -v && rc_exit
# We assume a fresh install if the directory $datadir/mysql
# does not exist and create the privilege database
if test ! -d $datadir/mysql ; then
echo "Creating MySQL privilege database and starting
MySQL..."
mysql_install_db --user=$mysql_daemon_user || rc_failed
esto hace que cada vez que se levante el mysql tambien se ejecute IPTABLES.
Aunque daria lo mismo si solo lo pones en la siguiente linea despues del
#!bin/sh de cualquier otro servicio que inicie.
Raul Martinez
----- Original Message -----
From: "Juan Torres"
Lo que te ha dicho Raul funcionaría, pero para hacerlo "profesional" (i para
que el día que deshabilites mysql no te deje de funcionar tu script), lo
suyo sería hacer lo siguiente. Digamos que tu script se llama "mi_script":
1) Poner "mi_script" en una carpeta adecuada: por ejemplo, /usr/local/bin
2) Crea en /etc/rc.d un script con el nombre que quieras (para simplificar,
mejor lo llames como el script de antes, pero aquí lo voy a llamar
"inicio_script" para que se vea la diferencia), con la misma sintaxis que el
resto. Este script será algo así como (no sé si es correcto, pero fíjate en
la idea. La plantilla para estos scripts es /etc/rc.d/skeleton, pero
probablemente no necesitarás ni una tercera parte de lo que contiene):
#!/bin/sh
case "$1" in
start)
echo -n "Arrancando script para iptables "
startproc mi_script
;;
stop)
echo -n "Deteniendo script para iptables "
killproc -TERM mi_script
;;
esac
3) En la carpeta /etc/rc.d/rcX.d/ correspondiente (donde X es el runlevel en
el que quieres que se ejecute tu script, en este caso sería el 3), crea los
siguientes links simbólicos al script que has creado antes: S99inicio_script
y K01inicio_script con las siguientes órdenes:
cd /etc/rc.d/rc3.d
ln -s ../inicio_script S99inicio_script
ln -s ../inicio_script K01inicio_script
La teoría sobre esto está en las páginas man e info sobre init.d.
Maria.
----- Original Message -----
From: "Juan Torres"
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
3) En la carpeta /etc/rc.d/rcX.d/ correspondiente (donde X es el runlevel en el que quieres que se ejecute tu script, en este caso sería el 3), crea los siguientes links simbólicos al script que has creado antes: S99inicio_script y K01inicio_script con las siguientes órdenes:
Ya puestos a hacerlo bien, cuando edites '/etc/init.d/mi_script', añádele unas líneas (siguiendo 'skeleton') al principio con algo así: #------------------------ ### BEGIN INIT INFO # Provides: iptables # Required-Start: $network # Required-Stop: # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Description: configura las tablas ip ### END INIT INFO ... blablalba ... #----------------------- Ahora, para instalar este "servicio" en los niveles de ejecución 3 y 5, sólo tienes que ejecutar 'insserv mi_script'. Y para eliminar los enlaces simbólicos que esto crea: 'insserv -r mi_script. Es una manera algo más elegante y conforme al LSB. ________________ Miguel de Benito. http://8027.org GPG Fingerprint: D5B5 5163 F3C5 E786 FDF4 D4BD 9C9A 9251 7D7D 5925 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE+Idc0nJqSUX19WSURAsmrAJ9yTfmHi0FXdDg5okJ6kwhQKL+lVgCfV9H2 WQpSQcxQqFd8P4f5nYZiQPg= =FBaS -----END PGP SIGNATURE-----
participants (4)
-
Juan Torres
-
Madieta
-
Miguel de Benito
-
Raul Martínez