
웹 개발을 하다 보면 자연스럽게 로컬호스트를 사용하게 된다.
다른 사람들에게 내 PC에 구동 중인 웹 애플리케이션을 보여주려면 localhost로는 불가능하기에 내부 IP 또는 외부 IP로 열어주고 해당 IP를 공유해줘야만 한다.

그런데 만약에 공유기를 사용하는 네트워크의 경우 DHCP를 통해 할당되는 내부 IP 주소가 지속적으로 변경될 수 있다.
물론, 공유기 설정에서 내 기기의 IP 주소를 고정하는 것도 방법이지만. 이러한 방법이 어려운 환경에서 매번 IP주소를 확인하는 것은 매우 귀찮은 일이다.
#!/usr/bin/env bash
# 필요한 커맨드
REQUIRED_COMMANDS="grep awk"
# 필요한 커맨드 확인
for cmd in $REQUIRED_COMMANDS; do
if ! command -v $cmd &> /dev/null; then
echo "$cmd 커맨드가 필요합니다."
exit 1
fi
done
# IP 주소 Regexp
IP_REGEXP="inet (addr:)?([0-9]*\.){3}[0-9]*"
# Awk 커맨드 (두 번째 열 출력)
AWK_CMD='{print $2}'
# ifconfig 사용
if command -v ifconfig &> /dev/null; then
echo $(ifconfig | grep -Eo "$IP_REGEXP" | grep -v "127" | awk "$AWK_CMD")
exit
# ip 사용
elif command -v ip &> /dev/null; then
echo $(ip addr | grep -Eo "$IP_REGEXP" | grep -v "127" | awk "$AWK_CMD")
exit
# ifconfig 또는 ip가 없는 경우
else
echo "ifconfig 또는 ip 커맨드가 필요합니다."
exit 1
fi
외부 IP는 생각보다 단순하다.
What is my IP등과 같은 서비스를 사용하거나 네이버에서 검색만 하여도 알 수 있다.
그렇지만 나는 커맨드라인을 사용하여 조회하고 싶기 때문에... 😂
다음 커맨드로 조회가 가능하다:
# OpenDNS를 사용
nslookup myip.opendns.com resolver1.opendns.com
# Curl + ifcfg.me 사용
curl ifcfg.me
TIP
만약에 AWS EC2 인스턴스 내부라면 다음과 같은 커맨드로 인스턴스 메타데이터를 통하여 조회가 가능하다!
curl http://169.254.169.254/latest/meta-data/public-ipv4