01-05-2020, 11:42 AM
(This post was last modified: 04-11-2024, 04:52 PM by Ganekogorta.)
Hola
1- Instalación y uso de la consola de comandos
3 -Usamos un editor para crear nuestro script
y en la segunda y sucesivas las ordenes en bash.
4-Probamos el script
5-Insertamos y activamos el script como tarea programada
También podemos editar el archivo de crontab desde un entorno mas amigable con WinSCP editando el archivo /etc/config/crontab que al ser un enlace simbólico, realmente está en /mnt/HDA_ROOT/.config/crontab. Pero no nos libramos de la consola para aplicar los cambios.
Creo haberlo explicado para que aquellos que no tienen conocimientos de consola, puedan defenderse y aplicar scripts (todo lo complicados o sencillos que queramos).
Como siempre si veis alguna errata o gazapo comentármelo por privado y lo corrijo.
Como es un tema recurrente y varios usuario lo preguntan, voy a describir de la manera mas sencilla que conozco, como programar la ejecución de un script en nuestra nas.
El script será un archivo que lo debemos de guardar dentro de la carpeta "share" para que se mantenga tras los reinicios de la nas. Yo recomiendo dejarlo en una carpeta compartida.
Este script puede ser para lanzar alguna tarea en bash , un correo electrónico, la ejecución de un programa, una tarea de sincronización,...
1- Instalación y uso de la consola de comandos
Todo ha de hacerse por consola de comandos o putty. Hay un paquete qpkg descargable del foro Qnap de Francia pero yo no le he probado aún. Si he probado Gotty y se que había antes un qpkg llamado "shell in a Box" que ya no lo encuentro en web.
Tomad nota de que el contenido de la web es efímero y si algo os interesa, lo descargáis y lo guardáis, que es posible que a futuro desaparezca.
Esto podéis aplicarlo al contenido multimedia de los canales de pago, hoy lo tenéis y mañana NO
Para poder acceder, también debéis tener activo el servicio de SSH. Para activarlo tenéis que ir al panel de control de QTS, servicios de red y de archivos. y después ir a "Telnet/SSH".
El puerto por defecto es el 22, pero podéis cambiar a otro. Es importante que este puerto no esté accesible desde internet.
Una vez instalado Putty, abrimos el programa, escribimos la ip privada de nuestra nas , el puerto de ssh y conectamos.
Al hacerlo nos pedirá credenciales. Aquí siempre usaremos el usuario admin . A ver si alguna vez Qnap cambia esto de ser admin
Al escribir la contraseña no vemos los caracteres.
Una vez dentro estamos en la línea de comandos.
Vamos a la carpeta "share" que cuelga de la raíz mediante el comando
Code:
cd /share
Una vez posicionados en ese directorio recomiendo crear una carpeta para futuros scripts ubicado en nuestro volumen y recomiendo hacerla como carpeta compartida para que QTS la cree por nosotros en la estructura de directorios.
- 2-si NO has creado la carpeta compartida "scripts"
Seguimos estos pasos para hacerla manualmente y si no salta al punto 3-Usamos un editor para crear nuestro script
Éste dependiendo del raid o la estructura de discos puede terne diferentes nombres (MDx_DATA, CACHEDEVx_DATA,...).
Para saber el nombre podemos hacer uso del comando "ls -lha" que nos muestra archivos y rutas de los enlaces simbólicos de nuestras carpetas compartidas.
Al hacerlo nos saldrán en pantalla un listado del contenido de "share".
De las carpeta compartidas, no saldrá a la derecha tras su nombre y los caracteres "--->" la ruta relativa donde está.
Por ejemplo la carpeta compartida "Scripts" está en "MD0_DATA/Scripts/".
De aquí sólo nos interesa MD0_DATA que es donde vamos a crear la carpeta para los scripts y creamos un archivo llamado "pruebas.sh"
Code:
cd MD0_DATA
mkdir Scripts
cd Scripts
vi pruebas.sh
3 -Usamos un editor para crear nuestro script
Ahora estamos en el editor arcaico y arisco editor vi (no recuerdo si viene otro editor llamado nano, pero podéis probar escribiendo "nano pruebas.sh" en vez de "vi pruebas.sh")
Escribimos el siguiente contenido en la primera línea
Code:
#! /bin/bash
y en la segunda y sucesivas las ordenes en bash.
En mi caso este script comprueba si el SAI conectado a la nas está funcionando con baterías o no.
Code:
ups=$(upsc qnapups@localhost | grep ups.status:)
estado=${ups:12:2}
echo "$ups $estado"
if [ "$estado" = "OL" ]; then
echo "EL SAI está suministrando energía desde nuestra red eléctrica"
else
echo "El SAI está suministrando energía desde sus baterías"
fi
Ahora para grabar el archivo hay que pulsar las siguiente teclas " ESC ", "w", "q" y "!" y pulsar intro
En la parte inferior izquierda se verá así.
Ya está creado, ahora hay que darle atributo de ejecución con el comando chmod
Code:
chmod +x pruebas.sh
Ahora ya tenemos un script que puede ser ejecutado en "/share/MD0_DATA/scripts/pruebas.sh"
Si no queréis un script tan complejo podéis poner uno sencillo que escriba algo en la consola con el siguiente contenido
Code:
#! /bin/bash
echo "Hola mundo"
4-Probamos el script
Podéis probar el script si ejecutamos el comando con la siguiente ruta absoluta
Code:
/share/MD0_DATA/scripts/pruebas.sh
Y saldrá algo similar a la siguiente captura
5-Insertamos y activamos el script como tarea programada
Antes de hacerlo y si echais una ojeada a la programación de cron veréis que podemos definir un fecha y hora exactas de ejecución, una periodicidad de minutos, horas, días, días de la semana.... es decir podemos complicarlo lo que queramos.
Por ejemplo vamos a ejecutarlo cada 15 minutos
*/15 * * * * /share/MD0_DATA/Scripts/pruebas.sh
Si queremos ejecutarlo los martes y jueves a las 12:00
00 12 * * 2,4 /share/MD0_DATA/Scripts/pruebas.sh
.--------------- minuto (0-59)
| .------------ hora (0-23)
| | .--------- día del mes (1-31)
| | | .------ mes (1-12) o jan,feb,mar,apr,may,jun,jul... (meses en inglés)
| | | | .--- día de la semana (0-6) (domingo=0 ó 7) o sun,mon,tue,wed,thu,fri,sat (días en inglés)
| | | | |
* * * * * comando a ejecutar
Una vez hayamos decidido la programación podemos agregarla usando en comando
Nos abre de nuevo al editor vi y todas las líneas que hay programadas.
No os asustéis si hay muchas, pero es importante que no alteréis ninguna de las existentes. Si lo hacéis por error, para salir sin hacer cambios pulsar tecla ESC, tecla dos puntos :, tecla q , tecla ! e Intro. Con esto se sale sin guardar.
En nuestro caso añadiremos al final del todo nuestra programación.
Para ello nos movemos con los cursores hacia abajo y con el de la derecha hasta situarnos en el último carácter.
Pulsaremos una vez la tecla de INS (insertar), volvemos a pulsar el cursor hacia la derecha y pulsamos intro para añadir la nueva línea
Ahora salimos y guardamos los cambios con la secuencia de teclas :
ESC, w, q, ! e Intro
Ya lo hemos modificado, ahora hemos de activarlo.
Desde consola escribimos las siguientes ordenes
Desde ese momento ya tenemos la línea en la programación, si queremos comprobarlos podemos escribir en consola
Nos listará en contenido de las programaciones en pantalla y veremos que en la última línea está la nuestra.Por ejemplo vamos a ejecutarlo cada 15 minutos
*/15 * * * * /share/MD0_DATA/Scripts/pruebas.sh
Si queremos ejecutarlo los martes y jueves a las 12:00
00 12 * * 2,4 /share/MD0_DATA/Scripts/pruebas.sh
.--------------- minuto (0-59)
| .------------ hora (0-23)
| | .--------- día del mes (1-31)
| | | .------ mes (1-12) o jan,feb,mar,apr,may,jun,jul... (meses en inglés)
| | | | .--- día de la semana (0-6) (domingo=0 ó 7) o sun,mon,tue,wed,thu,fri,sat (días en inglés)
| | | | |
* * * * * comando a ejecutar
Una vez hayamos decidido la programación podemos agregarla usando en comando
Code:
vi /etc/config/crontab
No os asustéis si hay muchas, pero es importante que no alteréis ninguna de las existentes. Si lo hacéis por error, para salir sin hacer cambios pulsar tecla ESC, tecla dos puntos :, tecla q , tecla ! e Intro. Con esto se sale sin guardar.
En nuestro caso añadiremos al final del todo nuestra programación.
Para ello nos movemos con los cursores hacia abajo y con el de la derecha hasta situarnos en el último carácter.
Pulsaremos una vez la tecla de INS (insertar), volvemos a pulsar el cursor hacia la derecha y pulsamos intro para añadir la nueva línea
Code:
*/15 * * * * /share/MD0_DATA/Scripts/pruebas.sh
ESC, w, q, ! e Intro
Ya lo hemos modificado, ahora hemos de activarlo.
Desde consola escribimos las siguientes ordenes
Code:
crontab /etc/config/crontab
/etc/init.d/crond.sh restart
Desde ese momento ya tenemos la línea en la programación, si queremos comprobarlos podemos escribir en consola
Code:
crontab -l
También podemos editar el archivo de crontab desde un entorno mas amigable con WinSCP editando el archivo /etc/config/crontab que al ser un enlace simbólico, realmente está en /mnt/HDA_ROOT/.config/crontab. Pero no nos libramos de la consola para aplicar los cambios.
Creo haberlo explicado para que aquellos que no tienen conocimientos de consola, puedan defenderse y aplicar scripts (todo lo complicados o sencillos que queramos).
Como siempre si veis alguna errata o gazapo comentármelo por privado y lo corrijo.
Un saludo
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η