Duda Script Linux

Buenas, me encuentro realizando un script sobre seguridad de servidores, en dicho script debo comprobar ciertas cosas como los temporales, los e-mails.... en resumen, un montón de cosas, pero bueno, tengo varias cosas que comprobar que no se como hacerlas, a ver si alguien me puede echar una mano.

1º Tengo que sacar por pantalla la cantidad de gente que tiene en su correo mas de 49MB(Si tienen mas no pueden recibir correos, por eso el comprobarlo)
Para ello yo en modo comando sin script hacía esto:

cd /direccion/loquesea

Y una vez dentro..

du -h *|grep 49

Bien, eso funciona bien, pero en un script lo llevo intentando desde hace varias horas y no doy cn la clave, ¿alguna sugerencia de como podria hacerlo?


2º Tengo que sacar por pantalla (yo en el script lo direcciono a un archivo de texto) los mensajes del http, y los logs del sistema, eso lo llevo haciendo manualmente con ;

less /var/log/messages

Pero claro, eso me saca toooodos los logs, sin exceptuar dias, yo queria sacar SOLO los del dia actual, yo he intentado hacer lo siguiente:

dia=`date|awk '{print $2,$3}'`

Con lo cual corto el dia del mes que es y despues..

less /var/log/messages|grep `${dia}` >> ${hoy}.txt

Pero la variable $dia no me la coge y no m aparecen ningun mensaje, ¿alguna ootra sugerencia?

He de decir que no soy ningun experto en shells, y posiblemente las cosas que hago se podrían mejorar de una y mil formas, pero bueno, nunca es tarde para aprender

Gracias y un saludo.
AlvaroInf escribió:Pero claro, eso me saca toooodos los logs, sin exceptuar dias, yo queria sacar SOLO los del dia actual, yo he intentado hacer lo siguiente:

Gracias y un saludo.
Prueba con find y -exec ;). (y mira el man)
Bueno al final me vino la imaginación(a uno de mi trabajo mas que nada..) y conseguí solucionar los dos problemillas que tenía.
El tema de los correos lo solucioné con ;

du -hs /var/spool/mail/* |grep 49|wc >> ${hoy}.txt

Y el tema de los logs del dia actual con;

cat /var/log/messages|grep "Apr 8" >> ${hoy}.txt


Pero ahora me viene otro problema, os cuento.

La fecha en los logs se enumera como Apr 8, es decir, Abril 8.
Pero la hora de linux al hacer date es, abr 8, es decir, Abril 8. Y claro, al hacer la busqueda por Apr salen bien, pero como mi intención es que coja la hora del sistema y conforme eso haga busquedas, ahi fallaría, por que no encontraría nada ya que son idiomas distintos.
Alguna sugerencia respecto a eso?

Gracias y un saludo
AlvaroInf escribió:por que no encontraría nada ya que son idiomas distintos.
Alguna sugerencia respecto a eso?
Ejecuta el "date" con una variable de entorno del lenguaje que necesites delante.

Algo como:
LANG=es_ES date

o:

LANGUAGE=es date

___________

Algo de ese estilo, pero con el idioma que necesites en_US, etc...
Buenas, al final lo consegui, añadiendo en el script:

LC_TIME=en_US con dicha linea cambio el idioma a Ingles pero sin cambiarlo en el sistema.

Bueno, ahora tengo un último detalle que me escama, os cuento.

less /var/log/messages muestra [Wed Abr 09]

Muestra la lista de logs de todos los dias, bien... pero como realizo una busqueda en dicho archivo por el dia actual?
yo hice lo siguiente:

cat /var/log/httpd/error_log|grep "${mes} ${dia}"

Peero eso falla, por que el dia es 9 segun date, pero en el /var/log/messages se enumera por 09, asi que no me muestra nada por que el 9 como tal no lo encuentra. Alguna idea de como puedo hacerlo?

Mes es una variable mia donde corto el mes de DATE, al igual pasa con dia.

Gracias de nuevo, este es el último retoque para el script perfecto :)
4 respuestas