ifconfig
스크립트에서 IP 주소를 가져 오는 데 사용하지 않는 것이 좋습니다 . 일부 배포에서는 더 이상 사용되지 않습니다 (예 : CentOS 및 기타), 더 이상 기본적으로 설치하지 마십시오).
다른 시스템에서 ifconfig의 출력은 배포 릴리스에 따라 다릅니다 (예 : 출력 / 간격 / 필드는 ifconfig
데비안 8과 데비안 9에서 다릅니다).
ip
와 비슷한 방법으로 IP 주소를 얻으려면 다음과 같이 요청하십시오.
ip addr | awk ' !/127.0.0.1/ && /inet/ { gsub(/\/.*/, "", $2); print "IP="$2 } '
아니면 더 나은 :
$ ip -o -4 address show | awk ' NR==2 { gsub(/\/.*/, "", $4); print $4 } '
192.168.1.249
또는 "IP ="를 물어 보면
#!/bin/bash
echo -n "IP="
ip -o -4 address show | awk ' NR==2 { gsub(/\/.*/, "", $4); print $4 } '
@Roman의 아이디어를 뻔뻔스럽게 적용
$ ip -o -4 address show | awk ' NR==2 { gsub(/\/.*/, "", $4); print "IP="$4 } '
IP=192.168.1.249
정상 출력 :
$ 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
보낸 사람 man ip
:
-o, -oneline은
각 레코드를 한 줄로 출력하여 줄 바꿈을 '\'문자로 바꿉니다. 이것은 wc (1)로 레코드를 세거나 출력을 grep (1) 할 때 편리합니다.
ifconfig
권장되지 않는 이유의 한 가지 예를보십시오 . BBB :`bbb-conf --check` IP 주소를`inet`로 표시-ifconfig woes
ifconfig
나가는 이유를 이해 하려면 'ifconfig'와 'ip'명령의 차이점을 참조하십시오.
ifconfig
net-tools에서 왔으며 오랫동안 Linux 네트워크 스택을 완전히 따라갈 수 없었습니다. 또한 네트워크 구성에 여전히 ioctl을 사용하는데, 이는 커널과 상호 작용하는 추악하고 덜 강력한 방법입니다.
2005 년경 네트워크 스택을 제어하기위한 새로운 메커니즘 인 netlink 소켓이 도입되었습니다.
네트워크 인터페이스를 구성하려면 iproute2
전이중 네트워크 링크 소켓 메커니즘을 ifconfig
사용하고 ioctl 시스템 호출을 사용합니다.