|
|
Crear un scrip desde otro y hacer que se ejecute en el arranque
Crear un script desde otro script es un sencillo ejercicio para aprender a programar nuestros propios script. Pero para ir más allá vamos a crear un script que a su vez cree otro script, lo copie en /etc/inid.d y desde allí se creen los enlaces necesarios para que éste segundo script se ejecute durante el arranque de linux.
Puede parecer muy complicado pero es extramadamente sencillo. Se van a crear dos versiones, una para la distribución ubuntu y otra para la distribución Suse linux. únicamente varían a la hora de añadir nuestros script en el arranque, y para ello en ubuntu se utiliza el comando update-rc.d y en Suse se utiliza el comando insserv, pero el resultado es el mismo. Ah, en Suse es necesario incluir en los script del arranque tres líneas que NO son necesarias en ubuntu, se indican cuáles.
Nota para los usuarios de Suse: En Suse tenemos el script /etc/init.d/skeleton que es el esqueleto y el modelo correcto y adecuado para los script de arranque que hagamos nosotros y luego usaríamos insserv para incluir nuestro script dentro del run level.
En realidad lo que hacen update-rc.d e insserv es crear los enlaces simbólicos en /etc/rcX.d y /etc/init.d/rcX.d en ubuntu y Suse respectivamente
#Creamos dos variables para guardar un texto y la ruta de destino del script a crear.
micad="#Esto es necesario sólo en Suse linux, en otras distribuciones eliminar"
mvdestino="/etc/init.d"
#Creamos el nuevo script y ponemos primera línea en él
echo \#!/bin/bash > $mvdestino/ubaloiecrear.sh
#Añadimos las siguientes línea
#Las dos siguientes líneas sólo son necesarias en Suse linux, en otras distribuciones eliminar
echo "/etc/rc.status $micad" >> $mvdestino/ubaloiecrear.sh
echo "rc_reset $micad" >> $mvdestino/ubaloiecrear.sh
echo "echo \"Ejecución del script:\" \$0 >> /tmp/ubaloieresultados" >> $mvdestino/ubaloiecrear.sh
#Hemos usado la barra para imprimir en el archivo destino caracteres especiales
echo "echo \"Hora:\"\`date +%H:%M:%S\`\" Fecha:\"\`date +%d/%m/%Y\` >> /tmp/ubaloieresultados" >> $mvdestino/ubaloiecrear.sh
echo "echo \"Argumento pasado al script, Start o Kill: \" \$1 >> /tmp/ubaloieresultados" >> $mvdestino/ubaloiecrear.sh
#Ésto sólo necesario en Suse
echo "rc_exit $micad" >> $mvdestino/ubaloiecrear.sh
#Ahora hacemos al script ejecutable
chmod +x $mvdestino/ubaloiecrear.sh
#Y ahora lo añadimos al arranque de linux.
#Debemos tener derechos de root ya que vamos a escribir en directorios cuyo propietario es el root, así que la siguiente línea dará error a menos que estemos logueados como tal.
En Suse:
insserv /etc/init.d/ubaloiecrear.sh
En Ubuntu
sudo update-rc.d -f ubaloiecrear.sh
#El script que hemos creado desde éste otro quedaria así, en Suse:
#!/bin/bash
#Las dos siguientes líneas sólo son necesarias en Suse linux, en otras distribuciones eliminar
/etc/rc.status
rc_reset
echo "Ejecución del script:" $0 >> /tmp/ubaloieresultados
echo "Hora:"`date +%H:%M:%S`" Fecha:"`date +%d/%m/%Y` >> /tmp/ubaloieresultados
echo "Argumento pasado al script, Start o Kill: " $1 >> /tmp/ubaloieresultados
#Esto es necesario sólo en Suse linux, en otras distribuciones eliminar
rc_exit
Lo que haría éste script es crear un archivo en /tmp llamado ubaloieresultados en el cual, durante el arranque de linux, se irían agregando el nombre del script ejecutado, siempre el que hemos creado, ahora parece una información inútil y repetida pero más adelante, en otros script, será muy importante saber qué script se ha ejecutado y dónde, pero bueno, eso es para daros ideas de por donde podéis expandir éste script. Bueno agrega más cosas como la hora y la fecha en que se ejecuta el script durante el arranque y parada y si se pasó Start y Kill.
Desde éste script podemos partir para hacer otros realmente potentes y útiles, sí, se que saber quién entra y cuándo entra a la máquina se puede ver en los archivos logs, pero ¿y si están troyanizados? Una idea: De éste script podéis hacer un gestor de información sobre vuestra máquina potente. Podéis usar comandos de linux como ps cambiados de ruta para que no sean troyanizados y "mirar" con él/ellos la seguridad de vuestro sistema.(Realmente es más arduo que eso pero como principio ilustra las posibilidades que tiene)
|
|