업무를 진행하다가 IP를 가져와서 Config 파일을 수정해주는 작업이 필요해서 작업을 하였는데, 작업을 하면서 생긴 문제점과 방안을 이 글을 통해 남기고자 합니다.
기본적으로 우리는 IP를 가져올 때 아래와 같이 ifconfig 명령어를 사용해서 가져올 것이다.
h2m8nui-MacBookPro:server h2m8n$ ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
위 예시는 MacOS BigSur 환경에서 사용하였습니다. ( IP는 루프백 보안상 루프백 주소 )
하지만 CentOS 7 부터는 ifconfig를 기본적으로 제공하지 않습니다.
그래서 아래와 같이 명령어를 사용하여야 합니다.
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
[root@localhost ~]# hostname --all-ip-addresses
127.0.0.1
내가 필요한 정보는 IP뿐만이었는데, 이렇게 IP만 딱 나오니 너무 기분이 좋았다.
하지만 도커 컨테이너 환경에서 경량화된 OS를 사용하다보니, hostname 명령어가 없는 경우를 발견하였다. 그래서 편리함을 뒤로 무릎쓰고 다시 원점으로 돌아갔다.
h2m8nui-MacBookPro:server h2m8n$ ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
1 . 우선 장비명을 알아야 했다. 왜냐하면 NIC장비 정보가 시스템마다 다르기 때문에, IP정보를 정확하게 가져오려면 담당자가 NIC정보를 알고있어야 했다.
ifconfig eth0
ip addr show eth0
grep inet | grep -v inet6
ifconfig eth0 | grep inet | grep -v inet6 | sed -e 's/\// /g'
ifconfig eth0 | grep inet | grep -v inet6 | sed -e 's/\// /g' | awk '{print $2}'
오늘 여러가지 테스트를 해보았다. OS환경마다 명령어 차이도 있기도 하고, 불편한 점도 있을 것이다.
각 환경에 맞게 스크립트를 작성하여서 사용하면 편리할 것 같다.