#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 ?
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:)[^.]+'
Mieux encore, avec la commande ip qui remplace ifconfig :
ip addr show eth0 | grep -oP '(?<=inet )[^.]+'
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne