Script bash configuration du réseau serveur

Bonjour,

Pour mon serveur j'ai fait ce script bash
#!/bin/sh     

#Recupere l'IP interne    
INT=eth1 # ou eth0     
IPINT='ifconfig $INT | grep "inet adr" | cut -d: -f2 | cut -d' ' -f1'     
IPINT2='ifconfig $INT | grep "inet adr"  | cut -d: -f4 '     
ADRESSE=$(netstat -ie | sed -n 's/^.*inet adr:\([0-9]*.\)\.\([0-9]*.\)\.\([0-9]*.\)\.\([0-9]*.\).*$/     
\1.\2.\3.\4/p')     

#Recupere l'IP externe     
export ip=$(GET www.monip.org)     
export IPEXT=$(echo $ip | (read IP; echo $IP |perl -ne '/(IP\s*:\s*(?:\d{1,3}\.){3}\d{1,3})/;print $1'))     

echo Ce script doit être executé en root.     
echo      
echo IP internet sur $INT : $IPINT     
echo IP externet : $IPEXT     
echo Sous Masque reseau : $IPINT2     
echo IP serveur apache :  $ADRESSE


Ici je ne suis pas arrivé a récupérer uniquement l'ip 127.0.0.1 avec
ADRESSE=$(netstat -ie | sed -n 's/^.*inet adr:\([0-9]*.\)\.\([0-9]*.\)\.\([0-9]*.\)\.\([0-9]*.\).*$/     
\1.\2.\3.\4/p')


J'ai besoin d'afficher également la passerelle , le serveur DNS1 et le serveur DNS2.
Comment puis je faire ?

Merci.

5 réponses

  1. Passerelle par défaut : dernière ligne d'un ip route show
    dns : dans le fichier /etc/resolv.conf
    1
    1. Bonjour

      Pour récupérer l'adresse dns dans le fichier j'ai fait ceci :
      for ligne in $(cat /etc/resolv.conf); do 
        SERVEUR_DNS_1='echo ${ligne} | cut -d " " -f 2' 
        SERVEUR_DNS_2='echo ${ligne} | cut -d " " -f 4' 
      done  
      echo $SERVEUR_DNS_1 
      echo $SERVEUR_DNS_2


      et il m'affiche :
      212.27.54.252 
      212.27.54.252


      au lieu de :
      212.27.53.252 
      212.27.54.252


      Fichier /etc/resolv.conf
      [root@localhost bash]# cat /etc/resolv.conf 
      # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) 
      #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN 
      nameserver 212.27.53.252 
      nameserver 212.27.54.252 
      [root@localhost bash]# 


      Je n'arrive pas a récupérer la 1er Adresse DNS la 1 de la première ligne, Pourquoi ?

      Merci.
      1
      1. Contributeur
        Salut,

         egrep -o  '([0-9]{1,3}\.){3}[0-9]{1,3}' resolv.conf 
        0
      2. Comme ton script est fait, il ne retient que la dernière ligne puisque tu réaffectes les 2 variables à chaque ligne lue. Et donc au moment du echo, les 2 variables portent sur la dernière ligne, donc .....54.252
        La solution de zipe parait meilleure en effet:)
        0
    2. Bonjour,

      Oui c'est pas bête mais je ne peut pas indiquer les DNS comme ceci :
      Serveur DNS 1 : 212.27.53.252
      Serveur DNS 2 : 212.27.54.252

      au lieu de :
      212.27.53.252
      212.27.54.252


      Merci.
      1
      1. Contributeur
        $ egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' resolv.conf | nl -n ln | sed 's/\s\+/ : /;s/^/Serveur DNS /'
        Serveur DNS 1 : 212.27.53.252
        Serveur DNS 2 : 212.27.54.252
        
        $
        0
    3. Bonjour;

      Ben justement je n'arrive pas a trouver ce qui ne vas pas dans mon script ?

      Merci.
      1
      1. Bonsoir,

        Pour la passerelle avec ceci :
        PASSERELLE='ip route show | grep "via" | cut -d: -f4 '
        echo Passerelle par default : $PASSERELLE


        Il s'affiche
        default via 192.168.0.254 dev eth1 metric 10 192.168.0.0/24 via 192.168.0.2 dev eth1 scope link


        Comment afficher uniquement la passerelle comme ceci :
        Passerelle par default :  192.168.0.254


        Merci.
        1