Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/09/2014, à 14:05

free.rage

[résolu] Script shell premier octet de l'adresse ip

Bonjour,

Je sollicite votre aide pour récupérer le premier octet d'une adresse IP. Mon but est le suivant : si le premier octet n'est pas 10, alors une commande est lancée sinon rien ne se passe.
De plus, je souhaite lancer cela au démarrage de la session, donc il faut attendre que l'IP de l'interface eth2 soit montée (DHCP).

J'ai trouvé beaucoup d'exemples de scripts différents dans mes recherches mais je bloque pour lancer cela sur la même ligne, en gros depuis le lancement des applications au démarrage.

Merci d'avance pour votre aide.

Mes recherches :
Pour récupérer l'@ IP : /sbin/ifconfig eth0 | grep inet | awk '{ print $2 }'
pour stocker l'IP dans un tableau : IFS="." ip=(@IP)

Dernière modification par free.rage (Le 25/09/2014, à 17:42)

Hors ligne

#2 Le 25/09/2014, à 14:10

pinguinman

Re : [résolu] Script shell premier octet de l'adresse ip

pour récupérer je premier octet directement

ifconfig eth0 | grep inet | awk '{ print $2 }' | awk -f '.' '{ print $1 }'

dans un script :

#!/bin/bash
octet=`/sbin/ifconfig eth0 | grep inet | awk '{ print $2 }' | awk -f '.' '{ print $1 }'`

if [ "$octet" != "10" ]; then
#tes actions
fi

Dernière modification par pinguinman (Le 25/09/2014, à 14:12)


OS : Ubuntu 14.04 / Debian Weezy / Ubuntu server 12.04

Avec Linux t'as un noyau, avec windows t'as des pépins ;)

Hors ligne

#3 Le 25/09/2014, à 14:15

bruno

Re : [résolu] Script shell premier octet de l'adresse ip

Comme ceci :

/sbin/ifconfig eth0 | grep "inet adr" | awk -F: '{ print $2 }' | awk -F. '{ print $1}'

Dernière modification par bruno (Le 25/09/2014, à 14:16)

Hors ligne

#4 Le 25/09/2014, à 14:17

pinguinman

Re : [résolu] Script shell premier octet de l'adresse ip

Avec l'attente de eth2 en plus

ifconfig eth0 | grep inet | awk '{ print $2 }' | awk -f '.' '{ print $1 }'

dans un script :

#!/bin/bash
octet=`/sbin/ifconfig eth0 | grep inet | awk '{ print $2 }' | awk -f '.' '{ print $1 }'`

eth2addr=`octet=`/sbin/ifconfig eth2 | grep inet | awk '{ print $2 }'`

if [ "$eth2addr" != "" ]; then
    if [ "$octet" != "10" ]; then
        #tes actions
    fi
fi


OS : Ubuntu 14.04 / Debian Weezy / Ubuntu server 12.04

Avec Linux t'as un noyau, avec windows t'as des pépins ;)

Hors ligne

#5 Le 25/09/2014, à 14:20

bruno

Re : [résolu] Script shell premier octet de l'adresse ip

@pinguinman : tu as testé tes commandes ? wink

Hors ligne

#6 Le 25/09/2014, à 14:51

pingouinux

Re : [résolu] Script shell premier octet de l'adresse ip

Bonjour,
Autres méthodes pour récupérer le 1er octet de l'IP :

octet=$(/sbin/ifconfig eth0 | sed -rn '/ inet /s/[^:]+:([0-9]+)\..*$/\1/p')

ou

octet=$(sed -rn '/ inet /s/[^:]+:([0-9]+)\..*$/\1/p' <(/sbin/ifconfig eth0))

Hors ligne

#7 Le 25/09/2014, à 15:02

pinguinman

Re : [résolu] Script shell premier octet de l'adresse ip

dsl,  j'ai vu le -f au lieu du -F sur awk.


OS : Ubuntu 14.04 / Debian Weezy / Ubuntu server 12.04

Avec Linux t'as un noyau, avec windows t'as des pépins ;)

Hors ligne

#8 Le 25/09/2014, à 15:09

free.rage

Re : [résolu] Script shell premier octet de l'adresse ip

Merci pour vos réponses. En mixant vos réponse, voici mon script de test :

#!/bin/bash
octet=$(/sbin/ifconfig eth2 | sed -rn '/ inet /s/[^:]+:([0-9]+)\..*$/\1/p') # Ok renvoie 10

eth2addr=`octet=`/sbin/ifconfig eth2 | grep inet | awk '{ print $2 }'`` # cette ligne provoque une erreur

if [ "$eth2addr" != "" ]; then
    if [ "$octet" != "10" ]; then
        echo "ma commande";
    fi
fi

La ligne de définition de la variable eth2addr retourne une erreur, elle indique que la commande eth2 n'est pas trouvée. De plus, n'y a t il pas moyen de mettre une temporisation ou une attente pour qu'eth2 soit montée ?

Merci.

Hors ligne

#9 Le 25/09/2014, à 16:09

nesthib

Re : [résolu] Script shell premier octet de l'adresse ip

Pourquoi faire compliqué ?

ifconfig eth0 | grep -oP '(?<=inet adr:)[^.]+'

tongue

Mieux encore, avec la commande ip qui remplace ifconfig :

ip addr show eth0 | grep -oP '(?<=inet )[^.]+'

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#10 Le 25/09/2014, à 17:42

free.rage

Re : [résolu] Script shell premier octet de l'adresse ip

Bon, voici au final mon script :

#!/bin/bash

sleep 10

octet=$(ip addr show eth2 | grep -oP '(?<=inet )[^.]+') # récupère le premier octet de l'@ IP

eth2addr=`ip a show eth2 | grep 'inet' | cut -d: -f2 | awk '{print $2}' | cut -d/ -f1` # récupère l'IP seulement

if [ "$eth2addr" != "" ]; then
    if [ "$octet" != "10" ]; then
        macommande;
    fi
fi

Il attend 10 secondes avant de vérifier les adresses IP puis si la condition est respectée exécute macommande.

Merci de votre aide.

Hors ligne

#11 Le 25/09/2014, à 17:58

nesthib

Re : [résolu] Script shell premier octet de l'adresse ip

Pour récupérer l'adresse entière :

ip a show eth0 | grep -oP '(?<=inet )[^ /]+'

Un peu de logique wink

Par ailleurs, tu pourrais faire d'une pierre deux coups :

IP=$(ip a show eth0 | grep -oP '(?<=inet )[^ /]+')
echo "L'ip est ${IP} et le premier octet est ${IP%%.*}."

NB. évite l'utilisation de « `…` », préfère la forme plus récente : « $(…) ».


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne