Buenas,
No sabia muy bien llamar al tema, asi que intentaré explicarme con la suficiente claridad.
Os cuento, debo de realizar diariamente informes de máquinas de mi empresa, dicho infrome, lo realizo con un script que elaboré en bash, dicho script en su principio tiene un formato donde saco la fecha actual y finalmente es ese el archivo que se vuelca.
Me explico:
hoy=date +%d%m%Y
d=date +%d
m=date +%m
a=date +%Y
mes=date|awk '{print $2}'
dia=date|awk '{print $3}'
echo "----Mensajes-----" >> ${hoy}.txt
cat /var/log/messages|grep -i "${mes} ${dia}" >> ${hoy}.txt
echo " " >> ${hoy}.txt
Con eso lo que realmente hago es sacar la fecha por pantalla y tras ejecutar un comando lo vuelco en el fichero que tiene el nombre de la fecha.
Mi problema viene con lo siguiente. Cuando el mes es dias 1-9 el /log/messages tiene un formato así: Dic 1, cuando es día 10-30, es así: Dic 20 . La diferencia es un solo espacio entre los numeros o dos en caso de ser un solo número.
Ahora mi duda, en dias 1-9 no me muestra nada por que yo tengo escrito que el comando sea con 1 espacio y no con 2, ¿como podría hacer que me añadiese al fichero el texto aunque fuera un dia comprendido ntre 1-9?
He pensado en hacer esto:
cat /var/log/messages|grep -i "${mes} ${dia}" >> ${hoy}.txt || cat /var/log/messages|grep -i "${mes} ${dia}" >> ${hoy}.txt
Es decir, tendría un ó, y si no encuentra nada, busca la otra opción, pero ese metodo no esta del todo depurado, así que pense hacerlo con if, algo asi:
if [$dia <= 0]
then
COMANDO
else
COMANDo
fi
Pero no me funciona, me muestra errores.
¿Alguien tiene idea de como podría hacerlo? entiendo que me he podido explicar algo mal, asi que si alguien puede echarme una manilla que prgunte y lo comentamos.
Aprovecho para comentar un segundo error en mi script. (este mas breve)
Yo hago una busqueda de los usuarios que tienen crontab activos(algo asi)
cat /etc/passwd|egrep -v "nologin|false|...." | awk '{print $1}' && crontab -l $a >> {hoy}.txt
El problema es que al hacer eso, por pantalla al ejecutar el script sale por pantalla "no crontab" cada vez que no encuentra un crontab para los usuarios.
¿hay forma de que no muestre NADA por pantalla?
Gracias a los que se presten a leerlo y encima rsponder jeje
Un saludo!