hola ya ahora si me funciona perfecto el script,

como pidieron al final de correo un directiva para que envie un correo si falla aqui envio no precisamente si falla la directiva sino cuando se completa la descarga de la actualizacion, pero quizas se pueda hacer algo inverso.

saludos y gracias x todo

#!/bin/bash

nombrepc=`echo $HOSTNAME`
dir=DIRECTORIO DE LA ACTUALIZACION
mkdir $dir > /dev/null 2>&1
cd $dir
t1=`date +%H:%M:%S`
if [ "$HOSTNAME" = "dominio" ]; then
    rsync rsync://X.X.X.X
    retval=$?
    if [ $retval -eq 1 ]; then
        mail -s "Imposible actualizar el kasperky - No esta funcionando el rsync de anubis" root@dominio < /dev/null
    else
        #--exclude="*.rar" --exclude="*.tar.gz" --exclude="updates_*" --exclude="index.html" --exclude="reg" --exclude=".l$
        #x.x.x.x::AVU/carpeta/carpeta /carpeta/carpeta/carpeta/update/
        rsync -auvvh --delete --progress x.x.x.x::AVU/carpeta/carpeta /carpeta/carpeta/carpeta/update/
        retval=$?
    fi
else
    cd /directorio de la actualizacion
    wget -N http://x.x.x.x/update/update.zip
    t2=`date +%H:%M:%S`
    cd /directorio/
    rm -r -f -v /directorio/update/*
    cd /directorio/update/
    cp /directorio/update-comprimido.zip  /directorio/update

    unzip update-comprimido.zip
    retval=$?
fi
t3=`date +%H:%M:%S`



    echo "Inicio de descarga: $t1" > /tmp/update.txt
    echo "Final  de descarga: $t2" >> /tmp/update.txt
    echo "Final  de descompresion: $t3" >> /tmp/update.txt
    fec_act=`grep UpdateDate /directorio/update/index/u0607g.xml | awk '{ print $1 }' | awk -F'"' '{ print $2 }'`
    echo >> /tmp/update.txt
    echo "Actualizado hasta el dia: $fec_act" >> /tmp/update.txt
    echo >> /tmp/updatetxt
    mail -s "Actualizado el antivirus kaspersky en ftp://$nombrepc/update/"; root@dominio,




El 10/8/2022 a las 01:21, Juan J. Fdez escribió:
Buenas Noches,

ya me berreé !!! y me hice un auto upgrade a mi pay grade o escala salarial !!! y asi ya de paso aprendo como es este lio de los timers de systemd que por cierto ya veo es muy fácil !

Por ende como dije en mi primera respuesta lo mejor es olvidarse del obsoletisimo CRON que ya lleva 2 generaciones y nuestros abuelos lo usaban y usar el mas moderno y versatil TIMER de SYSTEMD y asi todo se controla via systemctl y con el journalctl se pueden ver los logs y demas

en este caso simplemente hay que crear 2 ficheros además del script shell por supuesto. que 2 ficheros ? , pues muy simpel el del .service o servicio y el del .timer o timer en si . estos ficheros contienen diversas directivas o variables que permiten configurarlos y creo lo unico que no le han puest oes por ej que cuando el evento o tarea se eecuta que te mande un email si falla o lo que sea y creo eso en CRON si se podia hacer. aqui con los timers de systemd creo se puede lograr pero no es una directiva directa o sea creo aun requiere hacer cosas extras.

en fin , voy a usar el mismo shell script bash original y simplemente l oadapto a mis IP y condiciones . le he llamado apagar.sh al script y por ende para que sea facil el service se llamara apagar.service y el timer se llama apagar.timer

Y por supuesto acabo de probar todo esto en 2 maquinas virtuales, ambas LxC o contenedores linux en el host PROXMOX llamado nest en mi casa , una es debian y la otra es ubuntu y en ambas funciona perfecto !. Aqui si no hay truco jejejeje, lo mismo si lo ejecutas manual o si lo ejecuta el propio timer de systemd

obviamente linux siendo linux , ambos ficheritos apagar.service y apagar.timer estaran dentro de /etc/systemd/system y por supuesto para crearlos puede usarse cualquier editor de texto , yo por ser pequeño uso nano !!! jejejeje

por ende el apagar.service seria ... buen odejame dar pct start 109 en el host proxmox pues claro esa LxC acaba de apagarse .... por ende tengo que encenderla

Ufff !, jejeje tengo solo 1 min pues como l ohice cuando boot entonces ejecuta el timer y ahimismo en 1 min se apaga jejejeje, tranqui tranqui , en 60 seg par de comandos como pct start 109 y pct enter 109 me permiten meterme adentro y via systemctl disable apagar entonecs deshabilitar el servicio al menos para que el proximo reboot o boot no se ejecute o sino simplemente systemctl stop apagar.timer para parar el timer pues aunque hagas systemctl stop apagar.service de todas formas el timer pendiente lo va a disparar

Ademas con systemctl status apagar.timer se ve clarito que en 35 segundos se iba a disparar a pesar ya estaba apagar.service disabled y stopped

Capisce ?, I hope so !

Ademas journalctl -u apagar.service o sino journalctl --unit=apagar.timer  te da las entradas del journal o sea los logs de todo lo que está sucediendo

en fin este es el primer ficherito el apagar.service y explico mas abajo

[Unit]
Description=Apagar al Criminal jejeje

[Service]
User=root
Group=root
Environment="victima_IP=192.168.1.99"
Environment="victima_HOST=renacuajo"
Type=oneshot
ExecStart= /root/apagar.sh

Como ves es muy facil , todo esta bien descrito , y es por seccioens , la primera seccion es UNIT y ahi se definen parametros si quieres aunque muchos son opcionales pero por ejemplo es bueno ponerle una descripcion arbitraria para saber de que trata el sevicio

Lo segundo es la seccion SERVICE y en esa se definen tambien directivas o parametros o incluso hasta variabels que funcionaran en ese environment PUES PERFECTAMENTE PUEDE A TI L OQUE TE PASABA ES QUE MANUALMENTE LAS VARIABLES DEL ENVIORENMENT SEAN DIFERENTES A CUANDO SE EJHECUTA EL CRON JOB !!!

y FIJATE QUE AUNQUE N OSE NECESITA EN EL CASO DE QUERER EJECUTAR ESETE SCRIPT COMO ROOT fijate que he definido el user y el group que va a ejecutar ese script aka servicio realmente

Despues en environment definí 2 variables que al final realmente no las he usado pero es como ejemplo

el parametro TYPE es el tipo de servicio , los que son digamos estaticos por ejemplo que no son DAEMONS es de tipo oneshot o sea el servicio no se esta ejecutando constantemente como sucede con un daemon pero ojo eso no quiere decir que se vaya a ejecutar solo 1 vez  pues el fichero .timer es quien controla eso

el ultimo parametro es el mas importante y obligado pues es el ExecStart que es donde se define el absolute path e donde esta el script por ejemplo o lo que uno quiere que haga , y OJO ES ABSOLUTE PATH (como VEN yo puse el script apagar.sh simplemente en mi carpeta como root o /root)

Y listo ya con eso el servicio esta definido y simpelemnte es grabarlo como ficherito /etc/systemd/system/apagar.service

ahora viene crear el ficherito .timer que es quien controla cuando se ejecuta ese sevicio apagar.service y este es un formato simple tambien como ejemplo .... y yo le llamo apagar.timer por simplicidad y claro va guardado ahi mismo en /etc/systemd/system

[Unit]
Description=Apagar al Criminal jejeje

[Timer]
OnBootSec=1m
OnUnitActiveSec=5m

[Install]
WantedBy=timers.target

como ven el ficherito .timer igualmente es bueno poner una descricion en la seccion UNIT pues si es mas facil leer el journal por ejemplo y saber de que se trata

Despues viene la seccion mas importante , llamada Timer , donde se definen los timers bajo lso cuales uno quiere que se ejecute el servicio . LE parametro OnBootSec l oejecuta al bootear la maquina y el otro que dice 5m lo ejecuta cada 5 min y todo eso es configurable y por supuesto hay muchos mas tipos de parametros que se pueden usar dependiendo de tus necesidades

La seccion Install posee ese WantedBy que basicamente está diciendo que este timer esta digamos habilitado o puesto o instalado en el fichero ese timers.target para que digamos al bootear la maquina los cargue como parte de los targets de los timers (PERO OJO REALMENTE para que se ejcute en el boot hay que ENABLE con systemctl ese timer ! y ahora explico eso.

hasta aqui sol ose ha cerado el script shell, se ha creado el ficherito .service y el corerspondiente .timer pero nada de eso aun ha ni habilitado esos timers y servicios ni los ha echado a andar o start y para ello se puyede usar o systemctl o service como es usual en systemd

Por ejemplo para habilitar el servicio y el timer para que no sea estatico o sea en cada boot se habiliten o carguen se usa ENABLE o sea

systemctl enable apagar.service o si prefiere
service apagar.service enable

Esos comandos lo habilitan el servicio PERO ESO NO LO HA EJECUTADO AUN EL SERVICIO y para ello hay que dar START o sea

systemctl start apagar    (si no especificas .service o .timer el asume es el service)

o incluso puedes systemctl stop apagar.timer si lo que quieres es parar la ejecucion del timer pendiente pero dejando aun el servicio corriendo !!!!

por ende esa division entre service y timer permite mucha flexibilidad para diversos escenarios me parece de hecho yo lo habia stop pero sin embargo tuve que tambien stop el apagar.timer y ademas disable para evitar queal hacer reboot vuelvan a arrancar !

POR FAVOR SI ALGUEIN SABE COM ODEFINIR UNA DIRECTIVA O PARAMETRO PARA QUE ENVIE UN EMAIL SI EL SERVICE FALLA POR EJEMPLO se los agradeceré peus ya es muy tarde y mañana como siempre me levanto a las 5 am para trabajar

por supuesto estos 2 ejemplos de lso ficheritos .service y .timer son muy muy basicos y simples !!!! , ahi hay un mundo de parametros y variabels que se pueden definir para controlar muchas cosas. realmente SYSTEMD es el presente y el futuro y como decimos aqui , THE WAY TO GO !!!!!

Asi que Cheers and nighty night ! y dejame deshabilitarlos y eliminarlos que eso maNña ya se me olvida y despues n iidea porque el jorunal dice que apagar al criminal se ha ejecutado con success y zunzun sigue apagado siempre jejejeje

JJ


On Aug. 9, 2022, at 10:00 p.m., Juan J. Fernandez <juanjf...@icloud.com> wrote:


Sorry way to above my pay grade !, lol , espero algún linuxero real le pueda ayudar.

Nighty night
JJ

On August 9, 2022 9:52:15 p.m. Leanny Pérez Estopiñales <leann...@nauta.cu> wrote:

no estoy usando HALT  en las lineas que puse anteriormente y pongo ahora nuevamente se ve que uso shutdown -h now  pero repito no creo que este ahi el problema, pues como dije en otro correo cuando ejecuto el sh trabaja perfecto, el problema esta cuando el crontab lo ejecuta.

ping -c 5 $IP 192.168.1.10
if [ $? -ne 0 ];then
   shutdown -h now
fi
El 9/8/2022 a las 21:43, Juan J. Fernandez escribió:
Por cierto espero su duda no sea que realmente está usando la opcion HALT o -h o --halt que realmente solo HALT o para todas las funciones de CPU y demás pero la maquina si se queda encendida realmente.

Si quiere REBOOT es la opcion -r y si quiere power off compketo entonces yo mejor pondria shutdown now y listo y por supuesto hsy motherboards que realmente ese shutdown now no las apaga realmente pero las modernas si ya creo que si.

Cheers
JJ

On August 9, 2022 9:25:16 p.m. Leanny Pérez Estopiñales <leann...@nauta.cu> wrote:

el ping si funciona,  y la tarea se esta ejecutando como root

aqui estan los ultimos logs del sistema (el script tiene nombre autooff.sh)

/var/log/syslog

Aug  9 21:10:01 multimedios CRON[5857]: (root) CMD (/etc/network/autooff.sh) Aug  9 21:10:07 multimedios CRON[5856]: (CRON) info (No MTA installed, discarding output) Aug  9 21:14:32 multimedios systemd[1]: Starting Cleanup of Temporary Directories... Aug  9 21:14:32 multimedios systemd-tmpfiles[8209]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring. Aug  9 21:14:32 multimedios systemd[1]: Started Cleanup of Temporary Directories. Aug  9 21:15:01 multimedios CRON[8422]: (root) CMD (/etc/network/autooff.sh) Aug  9 21:15:05 multimedios CRON[8421]: (CRON) info (No MTA installed, discarding output) Aug  9 21:17:01 multimedios CRON[9294]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly) Aug  9 21:20:01 multimedios CRON[10599]: (root) CMD (/etc/network/autooff.sh) Aug  9 21:20:05 multimedios CRON[10598]: (CRON) info (No MTA installed, discarding output)

y esta es la tarea en el crontab

*/5 * * * * /etc/network/autooff.sh

El 9/8/2022 a las 21:18, Juan J. Fernandez escribió:
Buenas Noches. No será que precisamente no tiene que shutfiwn nada pues el ping al IP si funciona? . Lo otro como que USER se está ejecutando esa tarea en el crontab?, asegurece sea al menos un user SUDO no?

Cheers
JJ

On August 9, 2022 9:09:57 p.m. Leanny Pérez Estopiñales <leann...@nauta.cu> wrote:

hola nuevamente, este es el escript resultante de la ayuda de algunos, resulta que cuando lo ejecuto manual hace todo el proceso perofecto, o sea chequea q este disponoble ese IP y si no responde pues apaga el equipo, pero la cosa esta en que cuando agrego la tarea al crontab no hace nada.. ya chequie el crontab y si esta ejecutando la tarea perfectamenete.


#!/bin/sh

ping -c 5 $IP 192.168.1.10
if [ $? -ne 0 ];then
   shutdown -h now
fi

echo "FIN"

exit 0


Alguna idea ?....

saludos


El 9/8/2022 a las 10:03, Leanny Pérez Estopiñales escribió:

gracias, ahora si funciono...

El 9/8/2022 a las 00:06, Juan J. Fernandez escribió:

 1. if [ $1 -gt 100 ]
 2. then
 3. echo Hey that\'s a large number.
 4. pwd
 5. fi



Vea ese ejemplo. Al menos en bash shell parece la sentencia o statement if then termina en fi no en if y creo es mas elegante estructurarlo asi por lineas y tabuladas o sea en bloques para identificar todo mejor en vez de todo o varias cosas en una libea con el separador ;

Creo el Sr Ulyses cometio un error tipografico al escribir el script

Cheers
JJ

On August 8, 2022 9:56:53 p.m. Leanny Pérez Estopiñales <leann...@nauta.cu> wrote:

Gracias compa, eso tambien lo pense que si fallaba x cualquier razon podia apagar el server,  por eso le pondre el ip del router que esta
fuera del bakup.

eso que me envias es con un script sh?


El 8/8/2022 a las 21:49, Ulises Gonzalez Horta escribió:
On 2022-08-08 21:20, Leanny Pérez Estopiñales wrote:
Hola colegas, debido al tema de ahora de los apagones llevo dias buscando la forma de como programar los server para que se apaguen automaticamente, la idea que tengo es que el server le haga ping a un ip X y al ese IP dejar de dar respuesta automaticamente se apague.(No
se si con watchdog eso se pueda implementar)

 alguno tiene una idea que me pueda dar?

saludos


_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu
To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu


ping -c 1 $IP
if [ $? -ne 0 ];then
shutdown -h now
if


Lo malo de esto es que si falla el ping por cualquier razon entonces
el servidor se va a apagar, y puede ser una falsa alarma


_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu
To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu


_______________________________________________
Gutl-l mailing list --gutl-l@listas.jovenclub.cu
To unsubscribe send an email togutl-l-le...@listas.jovenclub.cu


_______________________________________________
Gutl-l mailing list --gutl-l@listas.jovenclub.cu
To unsubscribe send an email togutl-l-le...@listas.jovenclub.cu

_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu <mailto:gutl-l%40listas.jovenclub.cu> To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu <mailto:gutl-l-leave%40listas.jovenclub.cu>



_______________________________________________
Gutl-l mailing list --gutl-l@listas.jovenclub.cu
To unsubscribe send an email togutl-l-le...@listas.jovenclub.cu

_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu <mailto:gutl-l%40listas.jovenclub.cu> To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu <mailto:gutl-l-leave%40listas.jovenclub.cu>



_______________________________________________
Gutl-l mailing list --gutl-l@listas.jovenclub.cu
To unsubscribe send an email togutl-l-le...@listas.jovenclub.cu

_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu <mailto:gutl-l%40listas.jovenclub.cu> To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu <mailto:gutl-l-leave%40listas.jovenclub.cu>


_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu
To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu




_______________________________________________
Gutl-l mailing list --gutl-l@listas.jovenclub.cu
To unsubscribe send an email togutl-l-le...@listas.jovenclub.cu
_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu
To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu

Responder a