ifconfig
Bazı dağıtımlarda kullanımdan kaldırılan bir komut dosyasında IP adresi almaktan kaçınmak daha iyidir (örneğin, CentOS ve diğerleri, artık varsayılan olarak yüklemeyin).
Diğer sistemlerde, ifconfig çıktısı dağıtımın serbest bırakılmasına göre değişir (örneğin çıktı / aralık / alanlar ifconfig
Debian 8'den Debian 9'a farklılık gösterir).
IP adresini almak için ip
, benzer bir şekilde soruyorsunuz:
ip addr | awk ' !/127.0.0.1/ && /inet/ { gsub(/\/.*/, "", $2); print "IP="$2 } '
Veya daha iyisi:
$ ip -o -4 address show | awk ' NR==2 { gsub(/\/.*/, "", $4); print $4 } '
192.168.1.249
Veya "IP ="
#!/bin/bash
echo -n "IP="
ip -o -4 address show | awk ' NR==2 { gsub(/\/.*/, "", $4); print $4 } '
@Roman'ın fikrini utanmadan uyarlamak
$ ip -o -4 address show | awk ' NR==2 { gsub(/\/.*/, "", $4); print "IP="$4 } '
IP=192.168.1.249
Normal çıktı:
$ ip -o -4 address show
1: lo inet 127.0.0.1/8 scope host lo\ valid_lft forever preferred_lft forever
2: eth0 inet 192.168.1.249/24 brd 192.168.1.255 scope global eth0\ valid_lft forever preferred_lft forever
Gönderen man ip
:
-o, -oneline
satır kayıtlarını '\' karakteri ile değiştirerek her kaydı tek bir satırda çıkarır . Bu, wc (1) ile kayıtları saymak veya çıkışı grep (1) yapmak istediğinizde kullanışlıdır.
Neden ifconfig
önerilmediği bir örneğe bakın : BBB: IP adreslerini `` inet '' olarak gösteren `` bbb-conf --check`` - ifconfig woes
Neden çıkışta ifconfig
olduğunu anlamak için bkz. 'İfconfig' ve 'ip' komutları arasındaki fark
ifconfig
Linux ağ yığınına uzun zamandır tam olarak ayak uyduramayan net araçlardan geliyor. Aynı zamanda çekirdek yapılandırması ile çirkin ve daha az güçlü bir iletişim yolu olan ağ yapılandırması için ioctl kullanmaktadır.
2005 yılı civarında ağ yığınını kontrol etmek için yeni bir mekanizma tanıtıldı - netlink soketleri.
Ağ arabirimini yapılandırmak için ioctl sistem çağrısına iproute2
dayanırken, tam çift yönlü netlink soket mekanizmasını ifconfig
kullanır.