Zuvor habe ich in bash den folgenden Befehl verwendet, um die Haupt-IP meines Servers zu finden
ipaddr=$(/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}' | grep -v '127.0.0.1')
In centos7 funktioniert es nicht mehr, da ifconfig nicht verfügbar ist und der Befehl nicht mehr funktioniert, auch wenn ich ifconfig
mit yum install net-tools
installiere.
Wie lautet der entsprechende Befehl für Centos 7
Danke vielmals
Sie können hostname command verwenden:
ipaddr=$(hostname -I)
SERVER_IP="$(ip addr show ens160 | grep 'inet ' | cut -f2 | awk '{ print $2}')"
ersetzen Sie ens160 durch Ihren Schnittstellennamen
Sie können einfache Befehle wie ausführen
curl ifconfig.co
curl ifconfig.me
wget -qO - icanhazip.com
Wenn Sie keine externen Quellen verwenden möchten (oder nicht können), würde ich Folgendes empfehlen:
DEVICE=$(ls -l /sys/class/net | awk '$NF~/pci0/ { print $(NF-2); exit }')
IPADDR=$(ip -br address show dev $DEVICE | awk '{print substr($3,1,index($3,"/")-1);}')
In der ersten Zeile steht der Name des ersten Netzwerkgeräts am PCI-Bus, in der zweiten Zeile die IP-Adresse.
BTW ps ... | grep ... | awk ...
stinkt. awk braucht kein grep.
So etwas - ein Riff auf @ maarten-vanlinthouts Antwort
ip -f inet a show eth0| grep inet| awk '{ print $2}' | cut -d/ -f1
Ich glaube, dass der zuverlässigste Weg, die IP-Adresse des externen Servers zu ermitteln, die Verwendung eines externen Dienstes ist.
ipaddr=$(curl -s http://whatismyip.akamai.com/)
Etwas spät aber ich benutze
curl -4 icanhazip.com
gibt die primäre IP-Adresse des Servers zurück.