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