Linux/Unix Shell Scripting - Script de búsqueda en varios servidores

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 16 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Script de búsqueda en varios servidores

Publicado por nov_85 (2 intervenciones) el 30/04/2021 11:59:09
Buenos días,

Necesito crear un script que me permita realizar una búsqueda en varios servidores pero con el siguiente proceso:
1- Se pedirá introducir tres variables para la búsqueda: fecha (que puede añadirse como aammdd/aammd/aamm/aam/aa, rango de horas a buscar y cadena/palabra que queremos buscar. (Ej: fecha: 210430, de 13 a 14 h, ERROR)
2- Se hará una búsqueda en dos servidores distintos por ssh de los archivos en cuyo nombre tenga la fecha introducida y que en su contenido tenga algún registro dentro del rango de horas (cada registro en estos archivos empiezan con el formato aaaa-mm-aa hh:mm:ss,msmsms pero puede tener varias lineas un mismo registro). Estos archivos estarán en un directorio concreto y será la misma ruta en ambos servidores. El resultado se guardará en un txt por cada servidor. (Ej: el txt contendrá los archivos donde se ha registrado toda la actividad entre las 13 y las 14 horas del 30/04/2021)
3- Se realizará una búsqueda de la cadena/palabra que hemos introducido en los archivos de la búsqueda anterior en el servidor correspondiente.
4- Se generará otro txt con los resultados de la búsqueda por servidor y se mostrará en pantalla el número total de registros encontrados en cada servidor.

He intentado mil maneras pero no soy capaz de quitar toda esta información de manera sencilla ¿alguien puede ayudarme?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 13
Ha aumentado 1 puesto en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Script de búsqueda en varios servidores

Publicado por José Luis (5 intervenciones) el 01/05/2021 13:01:06
Hola,

Pon lo que has realizado para orientarte.

No se si te atoras en definir las variables, en conectarte a los servidores, en limpiar el archivo, en fin.

Pon tu avance y en lo que no entiendas te podré si está al alcance de mi conocimiento o algún colega te puede orientar.

Saludos
José Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 16 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Script de búsqueda en varios servidores

Publicado por nov_85 (2 intervenciones) el 07/06/2021 15:46:47
Buenas tardes,

El mayor problema que tengo es en hacer la conexión y búsqueda en otros servidores guardando los resultados en un archivo de texto y mostrando el numero total de registros encontrados (siempre me da error o no me lo hace bien):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
# Buscador por día
 
echo "Script para buscar por día"
echo
 
#ENTRADA DE DATOS
 
echo "Introducir fecha en formato yymmdd o parte de la misma:"
# Se lee la fecha del teclado y se guarda en la variable fecha
read fecha
echo
 
echo "Introducir valor a buscar:"
# Se lee el array del teclado y se guarda en la variable buscar_valor
read buscar_valor
echo
 
echo "Introducir tipo en minusculas:"
# Se lee y se guarda en la variable tipo_m
read tipo_m
 
 
#Ruta y nombre del archivo donde se buscará (ej.Archivo_DE_PRUEBA_array_20210607.txt o Archivo_DE_PRUEBA_numeros_20210607)
ruta=/carpeta1/carpeta2/carpeta3/
nombre_archivo="Archivo_DE_PRUEBA_"
nombre_archivo="$nombre_archivo${tipo_m}_"
nombre_archivo="$nombre_archivo$fecha"
usuario=$(whoami)
 
echo
echo "Se hará la búsqueda en el archivo que comience por ${nombre_archivo}"
echo
 
# Si el archivo de ficheros o resultados existe, borrarlo primero
if [ -f /home/$usuario/bin/bash/resultados.txt ]; then
    rm /home/$usuario/bin/bash/resultados.txt
fi
 
if [ -f /home/$usuario/bin/bash/ficheros.txt ]; then
    rm /home/$usuario/bin/bash/ficheros.txt
fi
 
nodo=1
 
if [$nodo -eq 1]; then
	echo "Se realizará la búsqueda en nodo1"
	ssh  -t [email protected]
	#Listamos los archivos con esa fecha
	find $ruta -name "${nombre_archivo}*" > ficheros.txt
	#Contamos en los logs de la fecha indicada el valor
	find $ruta -name "${nombre_archivo}*" -exec zgrep "$buscar_valor" {} \; > resultados.txt
	RESULTADO1=$(find $ruta -name "${nombre_archivo}*" -exec zgrep -c "$buscar_valor" {} \;)
	arr=( $RESULTADO1 );echo "$((${arr[@]/%/+}0))"
	nodo=$nodo+1
 
elif [$nodo -eq 2];then
	echo "Se realizará la búsqueda en nodo2
	ssh  -t [email protected]
	#Listamos los archivos con esa fecha
	find $ruta -name "${nombre_archivo}*" > ficheros.txt
	#Contamos en los logs de la fecha indicada el valor
	find $ruta -name "${nombre_archivo}*" -exec zgrep "$buscar_valor" {} \; > resultados.txt
	RESULTADO2=$(find $ruta -name "${nombre_archivo}*" -exec zgrep -c "$buscar_valor" {} \;)
	arr=( $RESULTADO2 );echo "$((${arr[@]/%/+}0))"
	nodo=$nodo+1
	else exit
fi
RESULTADO=$RESULTADO1+$RESULTADO2
# Avisar al usuario que se ha terminado de ejecutar el script
echo ---------Fin del script.-------------


Muchas gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar