Il peut y avoir plusieurs façons différentes d'accomplir ce que vous demandez, mais je vais juste lancer cette idée.
J'ai un MacBook Pro qui n'a pas de port Ethernet intégré, donc dans mes exemples je vais utiliser Port matériel : Wi-Fi car je l'ai testé dans les deux exemples ci-dessous et cela a fonctionné, cependant vous pouvez le changer en Port matériel : Ethernet si c'est ce que la sortie de
networksetup -listallhardwareports
montre pour vous.
Si vous souhaitez simplement transmettre l'adresse IP du périphérique cible à l'adresse suivante stdout
Pour cela, utilisez l'exemple suivant :
$ ipconfig getifaddr $(networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/{getline; print $2}')
192.168.1.100
Si vous voulez l'affecter à un variable dans un script Pour cela, utilisez l'exemple suivant :
ipAddress="$(ipconfig getifaddr $(networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/{getline; print $2}'))"
Explication :
La sortie pertinente de networksetup -listallhardwareports
pour mon système est :
Hardware Port: Wi-Fi
Device: en0
Ethernet Address: 28:cf:e3:10:a4:cd
(Note : Ce n'est pas ma véritable adresse MAC)
Utilisation de $(...)
de substitution de commande afin d'avoir quelque chose à transmettre à ipconfig getifaddr <args>
Je détermine le nom de l'appareil du port matériel avec la sortie de networksetup -listallhardwareports
et tuyau |
à travers awk
qui recherche Hardware Port: Wi-Fi
et utilise le get line
qui lit la ligne suivante après la fonction match et est transmis à print $2
qui, en fait, imprime la deuxième partie de la ligne suivant l'élément match qui, dans le cas présent, est en0
et il est transmis à ipconfig getifaddr
comme argument dans le premier exemple, par exemple ipconfig getifaddr en0
. Le résultat est l'adresse IP.
Dans le deuxième exemple, un deuxième $(...)
La substitution de commande est utilisée autour de la ligne de commande complexe utilisée pour l'option stdout
pour l'assigner à l ipAddress
variable lorsqu'il est utilisé dans un script .
Note : Ceci est vraiment un exemple car je ne l'ai pas codé pour tenir compte du fait que l'appareil est hors service. En d'autres termes, si l'appareil n'a pas d'adresse IP, il n'y aura pas de sortie vers la fonction stdout
et rien n'est attribué à la ipAddress
variable dans le script . Bien que dans le script il peut être codé pour tester si oui ou non la ipAddress
variable est vide et agir en conséquence.