Hello à toutes et tous,
J’ai trouvé un script sous Debian 8 pour récupérer l’adresse ip de l’interface eth0.
Il fonctionne très bien 
Mais j’ai passé ma carte tinkerboard sous Debian 9 et le ifconfig a change :
root@diagbox:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.52 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::2e4d:54ff:fe43:34dd prefixlen 64 scopeid 0x20<link>
ether 2c:4d:54:43:34:dd txqueuelen 1000 (Ethernet)
RX packets 325181 bytes 431503077 (411.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 125790 bytes 151664286 (144.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 44
Et voici le script :
#!/bin/bash
ifconfig eth0 | grep 'inet addr: ' | cut -d: -f2 | awk '{ print $1}' >/diagbox/web/tmp/ip.txt
Je n’arrive pas à adapter le script au nouveau ifconfig.
J’ai essayé de ne mettre que inet au lieu de inet adres mais ca ne fonctionne pas.
je ne comprends pas le ct -d: -f2
Est ce que quelqu’un pourrait m’expliquer? 
Je pourrais aussi adapter le script pour récupérer l’adresse mac
Merci d’avance
ifconfig n’est plus, mieux vaudrait effectivement utiliser ip addr show eth0.
Si tu cherche à extraire l’IP en bash tu doit pouvoir faire ça avec un :
ip addr show eth0 | grep inet | tr -s ' ' | cut -d ' ' -f 3
Maintenant si tu possède plusieurs interfaces cela va te remonter toutes les IPs
Si tu ne veux que la première ligne, en règle générale eth0 si il n’y a pas de wifi ajoute un head -n1 en bout de ligne.
@Clochette: Malheureusement, c’est vrai… mais tu pars du principe que l’interface se nomme ‹ eth0 ›… Or, hormis d’avoir reconfigurer sa Debian, ce nommage n’est plus vrai par défaut !
Voici ma proposition :
@domoticity: Sachant que si tu fais : ip link - cela te restituera toutes les interfaces réseaux sur ta machine, qu’elles soient connectées à un réseau ou non !
Tu en auras - normalement au moins deux - celle de bouclage locale, et celle communiquant sur un réseau ethernet - qu’elle soit Wifi ou de lien physique. Bien-sûr, tu peux en avoir plus selon ta configuration.
Normalement :
- la première est l’interface de bouclage ‹ lo ›
- la deuxième est l’interface RJ45, si tu en as une - et, admettons que ce soit le cas…
Le script :
iface=2
family=inet
addr="$(ip addr show "$(ip link | awk -F': ' '/ '"${iface}"':/ { print $2 }' | head -n1)" | awk -F' ' '/'"${family}"' / { print $2}')"
echo "${addr:0:-3}" # on enlève les trois derniers caractères, car reçu en notation CIDR...
En version, un peu plus facile à lire :
nb=2
family=inet
iface="$(ip link | awk -F': ' '/ '"${nb}"':/ { print $2 }' | head -n1)"
addr="$(ip addr show "${iface}" | awk -F' ' '/'"${family}"' / { print $2 }')"
mac="$(ip addr show "${iface}" | awk -F' ' '/link\/ether/ { print $2 }')"
echo "${addr:0:-3}"
echo "${mac}"
Dans le premier cas, je ne restitue pas la recherche sur l’adresse mac… mais il suffit d’adapter le deuxième exemple au premier si besoin !
Déjà, c’est ‹ cut › et non ‹ ct ›… ensuite, c’est une commande qui comme son nom anglais l’indique permet de couper une chaîne de caractère, selon un séparateur défini…
Là, elle coupe la chaîne reçue, selon le séparateur ‹ : ›, et elle restitue le deuxième champ…
Un man cut dans ton terminal préféré t’en apprendra plus ! 
Salut
l’@ip est visible directement dans ip ad
ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 98:4b:e1:c6:c4:7b brd ff:ff:ff:ff:ff:ff
3: wlp3s0b1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1492 qdisc mq state UP group default qlen 1000
link/ether cc:52:af:5a:a2:b5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.68/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp3s0b1
valid_lft 84641sec preferred_lft 84641sec
Il ne demande pas comment est-elle visible, mais comment on la récupère !!!
J’aurais eu la possibilité de te mettre un ‘-1’, tu l’aurais gagné ! 
c’est surtout que je ne vois pas l’interet de passer par ip link, tout est dans ip ad pour un expert en code dans ton genre ça doit etre facile
De toute façon, tu vas être obligé de récupérer une première fois le nom de l’interface réseau, en question.
Il est vrai que ip ad permet de voir tes adresses réseaux… mais ip link est LA commande pour connaître le nom de tes interfaces…
Sans parler que @Clochette a parlé - à juste titre de ip addr show...
À toi de voir, perso, je le propose ainsi et selon le manpage ‘‘ip’’ !
une piste ip ad | egrep '"state UP" | inet'
c’est cadeau.
root@debian:/# ip ad | egrep '"state UP" | inet'
inet 127.0.0.1/8 scope host lo
inet 192.168.1.68/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp3s0b1
root@debian:/#
et avec cut considérant que l’@ip est affichée des colonnes 9 à 21
ip ad | grep -i "state UP" -A2 | grep inet | cut -c9-21
root@debian:/# ip ad | grep -i "state UP" -A2 | grep inet | cut -c9-21
192.168.1.68
root@debian:/#
Merci à toutes et tous pour vos messages.
JE vais essayer toutes les méthodes proposées.
en tout cas mille foi merci encore. 
Quelque soit la méthode que tu utilises, le tout est surtout que tu comprennes de quoi il retourne et comment faire… 
C’est ce qui est intéressant avec ce forum, beaucoup de personnes interavissent, donnent des conseils et leur méthode. Et in apprend énormément ainsi
j’ai utilisé la méthode de clochette qui me sort mon iPhone avec le masque de sous réseau sœur forme 192.168.1.10/24
Merci à toutes et tous encore.
Maintenant je vais me penser sur la fonction cut lol