Shell Script para encontrar la dirección IP de varios servidores
En este tutorial, aprendemos a escribir un script de shell para encontrar la dirección IP de varios servidores Linux. Esto es muy útil cuando se realizan auditorías en los servidores.
El script de shell se puede utilizar para encontrar los detalles de la interfaz Ethernet y la dirección IP / máscara de red asignada desde varios servidores.
El script también mostrará el nombre de la interfaz incluso si no se establece una dirección IP. Asegúrese de haber configurado claves autorizadas para que cada servidor pueda iniciar sesión usando ssh sin una contraseña.
Shell Script para obtener la dirección IP
En el siguiente script, el archivo ‘server_list.txt’ mantiene las listas de servidores y el archivo ‘result.txt’ contiene toda la salida con el nombre del servidor y los detalles de la IP.
#!/bin/bash
#we save to variable name of file with list of server
serverlist="server_list.txt"
#we save to variable list of servers from file
servers=`cat $serverlist`
#we save in variable name of file with results
result="result.txt"
#we get each server from servers variable
for server in $servers
do
#Printing servername to result file
echo -e "$server"> $result
#getting list of ethernet links via ifconfig command, and from all output we need onlu lines that have word link and starting with [a-z][a-z]*[0-9], and after we get first word from output
ips=`ssh root@${server{ "ifconfig -a | grep -o -e '[a-z][a-z]*[0-9]*[ ]*Link' |grep -v lo| perl -pe 's|^([a-z]*[0-9]*)[ ]*Link|1|'"`
After for every ethernet link from ips variable
for ip in $ips
do
#we get ips, via ifconfig command, and grepping for inet addr script.
INET=`ssh root${server} "ifconfig $ip |grep -o -e 'inet addr:[^ ]*' | grep -o -e '[^:]*$'"`
#same for mask
MASK=`ssh $server "ifconfig $ip |grep -o -e 'Mask:[^ ]*' | grep -o -e '[^:]*$'"`
#this check if any ip assigned
if [ -x $INET ];
then
#if no ip we will get no ip address set
INET="no ip address set"
fi
#we check if we get mask
if [ -x $MASK ];
then
MASK="no mask address set"
fi
#and we put result to result file.
echo "$ip : $INET : $MASK" >> $result
done
#this print empty line to result file
echo “” >> $result
done
Salida de muestra
Server1#./ifconfig.sh.sh Server1#cat result.txt red eth0 : 91.197.140.34 : 255.255.255.0 eth1 : 192.168.33.34 : 255.255.255.0 venet0 : no ip address set