Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #angeldp
- #buscaHosts.sh
- # Busca los equipos conectados a una LAN determinada (red pasada como
- # parámetro o pedida al usuario si no se pasa nada.)
- # Lista las IPs activas en la red y, opcionalmente,
- # crea un fichero de configuración para el clusterSsh con las IPs de
- # los equipos activos.
- clear
- # Si no se ha pasado nada como parámetro; o éste no es una IP
- # se la solicito de forma interactiva
- # La cutre comprobación lo que hace es sustituir los puntos
- # de la IP por espacios y luego contar las palabras. Si no
- # son 4, es que no ha pasado nada parecido a una IP y se la pido.
- if [ `echo $1 | tr \. ' ' | wc -w` != 4 ]
- then
- echo "Indique la dirección de red a escanear: "
- read IPvLAN
- else
- IPvLAN=$1
- fi
- # Se deberá comprobar el contenido de IPvLAN, pero como el script es
- # para uso personal, ya me aseguraré de indicar un IP válida.
- # Lo que el script hará será escanear desde la dirección X.X.X.1 a la
- # X.X.X.254 buscando las IPs que estén activas.
- # Para hacerlo, primero guardo los 3 primeros octetos de la IP
- rangoIP=`echo $IPvLAN | cut -d. -f1-3`
- # Uso nmap para escanear el rango guardando las IPs activas en listaIPS
- echo "Escaneando la red..."
- listaIPS=`nmap -sP ${rangoIP}.1-254 | grep ${rangoIP}. | cut -d' ' -f5`
- # Quiero dar la opción de excluir alguna IP, como el gateway o el equipo
- # del profesor...
- echo "Señale, si lo desea, la lista de direcciones IP (separadas por comas) a ex
- cluir del listado. Pulse enter para no indicar ninguna"
- read whiteIPS
- # Construyo un bucle for que recorra las IPs activas, las compare con
- # la lista de excluidas, y, de no estarlo, las muestre y guarde en
- # el fichero clusters
- for IP in $listaIPS
- do
- # Para comprobar si una IP está en la lista de excluidas busco
- # en la lista esa IP y, si no la encuentra, la guardo como válida.
- AUX=`echo $whiteIPS | grep $IP`
- if [ -z $AUX ]
- then
- IPSaula="$IPSaula $IP"
- fi
- done
- # Muestro la lista
- echo -e "IPs asignadas en el rango ${rangoIP}.1-254:\n$IPSaula"
- # Pregunto si se desea generar un fichero clusters ssh con ellas
- echo "¿Desea generar un cluster con estas IPs? s/n"
- read -s -n1 OPC
- if [ "$OPC" = "s" -o "$OPC" = "S" ]
- then
- # Compruebo que se ha lanzado el script como root, ya que para
- # sobreescribir el archivo /etc/clusters es necesario.
- if [ $UID -ne 0 ]
- then
- echo "Para crear el cluster deber root."
- echo "sudo le puede ayudar la próxima vez."
- echo "Saliendo sin realizar cambios en /etc/clusters"
- exit
- fi
- # Como quiero abrir la conexión como root, añado la cadena root@ al
- # inicio de cada IP y las voy acumulando en listaCLUSTER
- for IP in $IPSaula
- do
- IP="root@${IP}"
- listaCLUSTER="$listaCLUSTER $IP"
- done
- # Pido el nombre del cluster y compruebo mediante la variable
- # CONTROL si existe una línea con el nombre proporcionado en el fichero
- # saldrá del bucle en el que pide el nombre del cluster solo cuando
- # no exista un cluster con ese nombre; o cuando se ha indicado que
- # se sobreescriba. (En esos casos pongo a 1 la variable CONTROL)
- CONTROL=0
- while [ "$CONTROL" = "0" ]
- do
- clear
- read -p "Nombre para el cluster: " CLUSTER
- EXISTE=`grep ^$CLUSTER /etc/clusters`
- if [ -n $EXISTE ]
- then
- echo "Ya existe un cluster llamado $CLUSTER"
- read -n1 -s -p "¿Desea sobreescribirlo? s/n: " OPC2
- if [ "$OPC2" = "s" -o "$OPC2" = "S" ]
- then
- CONTROL=1
- fi
- else
- CONTROL=1
- fi
- done
- # Una vez fuera del bucle, mando una copia del fichero /etc/clusters
- # sin la línea del cluster indicado (si existiera) al home del usuario
- grep -v ^$CLUSTER /etc/clusters > $HOME/clusters 2> /dev/null
- # Actualizo la información sobre la copia, y muevo esa
- # copia a su destino original, comprobando el error.
- echo "$CLUSTER $listaCLUSTER" >> $HOME/clusters
- mv $HOME/clusters /etc/clusters 2> /dev/null
- if [ $? -ne 0 ]
- then
- echo "Se ha producido un error."
- echo "en $HOME/clusters debería tener una copia del fichero clusters"
- exit
- fi
- echo "Hecho, el fichero /etc/clusters se ha actualizado "
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement