빠르고 간단하게: Bash로 IP 주소 가져오기
문제
bash 스크립트에서 IP 주소를 가져와야 할 때가 있나요? 수없이 저를 구해준 간단한 한 줄 명령어를 소개합니다!
해결책
이더넷 인터페이스가 eth0라면:
$ IPADDR=$(ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $2}')
$ echo $IPADDR
172.17.0.3
작동 원리
단계별로 분석해봅시다:
ifconfig eth0- eth0의 인터페이스 정보 가져오기grep inet- “inet”을 포함하는 줄 필터링head -1- 첫 번째 일치 항목만 가져오기sed 's/\:/ /'- 파싱을 쉽게 하기 위해 콜론을 공백으로 교체awk '{print $2}'- 두 번째 필드 가져오기 (IP 주소)
최신 대안
최신 시스템을 사용한다면 오래된 ifconfig 대신 ip를 사용하는 것이 좋습니다:
$ IPADDR=$(ip route get 1 | awk '{print $NF;exit}')
$ echo $IPADDR
172.17.0.3
이 방법은 인터넷에 도달하기 위해 사용될 인터페이스의 IP를 가져오기 때문에 더 신뢰할 수 있습니다.
프로 팁
- 항상 특정 환경에서 스크립트를 테스트하세요 - 네트워크 인터페이스 이름은 다를 수 있습니다!
- 프로덕션 스크립트의 경우 인터페이스가 존재하는지 확인하는 오류 검사를 추가하세요
- 인터페이스가 다운되었거나 IP가 없을 때 어떻게 될지 고려하세요
부록: 참고자료
때로는 가장 간단한 해결책이 최고의 해결책입니다! 🚀