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