El siguiente guion consta de 2 script, un guion Shell script y otro guion EXPECT. Para ejecutarlo tiene que tener instalado la utilidad EXPECT (librería que automatiza scripts interactivos). En esta misma web puede encontrar información al respecto.
El primer guion lo llamaremos «cambio_password.sh» el cual tiene permisos de ejecución, las lineas estan documentadas para no entrar en mayores detalles.- Este programa llama a un segundo guion creado en EXPECT (cambio_password.exp), al cual le pasa 5 argumentos por linea de comando.
Shell
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
#!/bin/bash
#La siguiente variable contiene elnombre de la cuenta (login)
cuenta=admin02
#La siguiente variable contiene la password antigua
pass_ant=antigua-pw
#La siguiente variable contiene la nueva password
pass_nue=nueva_pw
#La siguiente variable contiene el comando que se ejecutara
comando=passwd
#La siguiente variable corresponde al archivo que contiene una lista con los nombres
#de los servidores a los que se les procedera a cambiar la password
servers="/usr23/home/pruebas/lista_servers.txt"
#La siguiente variable contiene el numeros de servidores a cambiar la password
num=`cat$servers|wc-l`
#Hora de inicio del proceso (solo para saber cuanto se demoro)
inicio=`date+%H:%M:%S`
#Ciclo FOR para iterar cada nombre de servidor
forservi in$(cat$servers);
do
echo" Cambiando Password SERVIDOR ==> $servi"
#La siguiente linea ejecuta un programa EXPECT en que al programa se le pasan 5 argumentos
Como se puede observar, ejecutando el siguiente comando «date–date=tomarrow +%d» se obtiene el número del día de mañana, que es guardado en una variable. Luego el contenido de la variable se compara con el número que esperamos que sea el día de mañana, que en el ejemplo es el día primero (1) del mes siguiente, y si cumple la condición hacemos lo que necesitamos hacer.
El MD5 es un algoritmo hash unidireccional y se puede utilizar para ayudar a determinar la integridad de un archivo, proporcionando una firma digital de 128 bits. Esta firma digital es como una huella digital para un archivo. Nos permite determinar en las réplicas de archivos entre servidores que no han sido alterados de ninguna forma, el cambio de un solo byte en un archivo resultará en un hash MD5 diferente.
Cuando el valor de suma de comprobación MD5 coincide perfectamente, se confirma que nadie ha puesto en riesgo la seguridad y la integridad digital de un archivo y, asimismo, que es una copia precisa del archivo original. Cuando hablamos de verificar la integridad de un archivo, estamos hablando de verificar que los datos de una copia son exactamente iguales a los del archivo original. Esta verificación nos permite evitar problemas de corrupción de datos y asegurarnos que los datos han sido almacenados correctamente.
Con respecto a la colisión de hash
(2 archivos diferentes con un mismo hash) es poco probable que suceda, ya que
por lo general tendría que realizarlo una persona (hacker).- Para el caso de
verificar replicas debería bastar con este sistema criptográfico.-
PROCEDIMIENTO VERIFICAR INTEGRIDAD DE ARCHIVOS.
1.- Tener acceso a los servidores
vía SSH desde servidor BASE que se utilizara, la cuenta debe tener permisos de
escritura en su HOME.-
2.- Para realizar el pareo de archivos (Verificar integridad), se debe generar un archivo de texto plano, con la ruta completa de todos los archivos que desea verificar, tal como el siguiente ejemplo.
Shell
1
2
3
/home/appl/certifica/web/cgi/verifica.cgi
/home/appl/certifica/web/cgi/calculo.cgi
/home/appl/certifica/web/cgi/presenta.cgi
Como ejemplo, se indican los comandos para SOLARIS o LINUX para sacar los nombres de archivos con su ruta completa, a partir de una ruta que se indique. Este proceso lo realiza en forma recursiva. –
3.- Teniendo el archivo a verificar, se procede a generar el hash MD5 para cada archivo, desde el servidor que indiquen como PIVOTE. Obteniendo el siguiente archivo, en que la primera columna corresponde al hash MD5 del archivo indicado (Firma digital del archivo).
Este archive se puede obtener mediante el siguiente SCRIPT, ejecutándolo en el servidor PIVOTE.
Shell
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/sh
archver=/home/pepe/granja-inor.ver
archhas=/home/pepe/granja-inor.has
if[-f$archhas];
then
rm-rf$archhas
fi
forurl in$(cat$archver)
do
/home/pepe/md5sum$url>>$archhas
done
4.- Este archivo con sus respectivos hash, se copia a cada servidor que componen la granja. Esto se realiza para que el proceso de verificación no sea invasivo. Al no ser un proceso invasivo, es fácil detectar problemas que están ocurriendo en el momento.
5.- Se lanza el Script que realiza el pareo en los servidores. El SCRIPT genera un archivo de LOG con los errores detectados, en el cual existen 2 tipos de errores, los cuales los anexa al final del archivo verificado, correspondiendo a :
FAILED = Indica
que el archivo es diferente al original del servidor PIVOTE.
FAILED open or read
= Indica que el archivo no existe o no se puede leer.
Con esto nos
aseguraríamos de no tener problemas con componentes a nivel de Aplicaciones, Sistema
Operativo, librerías, configuraciones de ambientes, programación, etc….
Esto se puede realizar con el siguiente SCRIPT. Este script se debe ejecutar desde el servidor BASE.- El Script funciona en forma correcta. Solo se deben modificar las rutas absolutas. A este programa se le pasan 5 parámetros, los cuales son gatillados desde un MENU, el cual no vale la pena exponerlo, ya que solo se da una idea de cómo realizar este procedimiento.- Si alguien tiene alguna duda, puede consultar…
Shell
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/ksh
# Manejo de colores
NONE='\033[00m'
RED='\033[01;31m'
GREEN='\033[01;32m'
YELLOW='\033[01;33m'
PURPLE='\033[01;35m'
CYAN='\033[01;36m'
WHITE='\033[01;37m'
BOLD='\033[1m'
UNDERLINE='\033[4m'
granja=$1
server=$2
cuenta=$3
ruta=$4
sum=$5
archver=/usr01/home/user/verifica/$granja.ver
archser=/usr01/home/user/verifica/$granja.txt
archlog=/usr01/home/user/verifica/$granja.log
archbak=/usr01/home/user/verifica/$granja.bak
correo=/usr01/home/user/verifica/correo
archhas=$granja.has
# En el archivo siguiente se ingresan las rutas completas de los archivos a verificar su integridad