Bash로 서버 IP 주소를 얻고 사용하시겠습니까?

Bash로 서버 IP 주소를 얻고 사용하시겠습니까?

배포하는 모든 시스템에서 완벽하게 실행되는 Bash 파일이 있지만 작동하려면 서버 IP를 명령에 입력해야 하며 각 서버에 수동으로 입력하지만 방법이 없을까 생각합니다. 이 프로세스를 자동화하려면? 예를 들어 다음 명령이 필요하다고 가정해 보겠습니다.

mycli serve --host x.x.x.x &

Bash 파일이 자동으로 서버 IP를 검색하고 각 서버에서 xxxx를 바꾸는 대신 해당 IP를 사용하여 명령을 실행하고 싶습니까?

답변1

IP 주소를 설정하는 스크립트 시작 부분에 변수를 설정한 후 스크립트가 실행하는 실제 명령에서 해당 변수를 사용합니다.

갑자기 생각난건데,

IPADDR=$(ip addr show |grep 'inet '|grep -v 127.0.0.1 |awk '{print $2}'| cut -d/ -f1)

그런 다음 스크립트에서 $IPADDRIP를 넣을 위치를 사용하십시오.

이는 단일 IP와 단일 루프백 127.0.0.1이 있는 서버에서만 올바르게 작동하며 이를 수행하는 더 좋은 방법이 있을 수 있습니다.

답변2

"호스트"에 IP 주소가 있다고 가정하면 다음을 수행할 수 있습니다.

MYHOSTIP=$(host `hostname` | head -n 1 | awk '{ print $NF; }') mycli servie --host $MYHOSTIP

답변3

시스템에 IP 192.168.1.X와 같은 LAN 에 2개의 이더넷 장치가 eth0연결되어 있고 장치가 ISP(WAN)에 연결되어 있다고 가정하면 IP WAN 측을 가져오려면 다음 명령을 사용해야 합니다 .eth1eth0eth1ifconfig

노트:방법 2에서는 2개의 이더넷 장치가 있는 컴퓨터에서 이를 실행하고 그 중 하나가 ISP(케이블 모뎀 및/또는 DSL 모뎀)에 연결되어 있다고 가정합니다. 이 경우 이더넷 장치(eth1)는 인터넷(WAN IP)의 IP 주소로 구성됩니다.

첫 번째 방법

                          +------------------------+
  +--------+    WAN IP    |   Computer that wants  |  LAN IP
  |Internet|--------------|     to know WAN IP     |------------
  +--------+  54.234.1.33 | +------+      +------+ | 192.168.1.1
                          +-| eth1 |------| eth0 |-+
                            +------+      +------+

% ifconfig eth1 | awk '/inet / { print $2 }' | sed -e s/addr://
54.234.1.33

이 명령을 사용할 수도 있습니다 ip.

% ip -4 addr show eth1 | awk '/inet/ {print $2}' | sed 's#/.*##'
54.234.1.33

두 번째 방법

LAN에만 있는 시스템에서 이 정보를 찾아야 하는 경우 비밀번호 없는 SSH 키를 설정하고 이를 LAN 시스템의 계정에 추가하면 이와 같이 WAN을 통해 시스템에 원격으로 액세스할 수 있습니다.

                                                            +----------------+
  +--------+    WAN IP      +-------------+      LAN IP     | Computer that  |
  |Internet|----------------|remote-server|-----------------| wants to know  |
  +--------+  54.234.1.33  +----+-----+----+  192.168.1.x  +----+ WAN IP     |
                           |eth1|     |eth0|               |eth0|------------+
                           +----+     +----+               +----+

% ssh ruser1@remote-server "ifconfig eth1 | awk '/inet / { print \$2 }' | sed -e s/addr://"
54.234.1.33

세 번째 방법

WAN 액세스가 가능한 상자에 SSH로 연결할 수 없고 Linksys 또는 Netgear 상자와 같은 홈 라우터/스위치를 사용하는 경우. HTTP 상태 페이지를 통해 장치에서 IP를 얻을 수 있습니다. 나는 이 기사에 설명된 것과 유사하게 과거에 이 작업을 수행한 적이 있습니다.Whatismyip.com 포럼 게시물.

                                                               192.168.1.2
                                                            +----------------+
  +--------+    WAN IP      +-------------+      LAN IP     | Computer that  |
  |Internet|----------------|router/switch|-----------------| wants to know  |
  +--------+  54.234.1.33   +-------------+   192.168.1.x  +----+ WAN IP     |
                              192.168.1.1                  |eth0|------------+
                                                           +----+

# something like this....

% wget -q -O - http://<username>:<password>@192.168.1.1/Status_Router.asp | grep "ipaddress" | cut -d" " -f2

노트:이 방법은 Linksys, Netgear 등 브랜드인지 여부에 관계없이 보유하고 있는 라우터/스위치에 따라 크게 달라집니다. 각각에는 WAN IP가 포함된 고유한 페이지가 있습니다.

네 번째 방법

WAN IP 주소를 보고하는 외부 인터넷 사이트에 쿼리를 보냅니다.

노트:나는 그들이 이 접근 방식에 대한 대안을 찾고 있다고 언급한 원래 질문을 알고 있지만 이 답변이 모든 기반을 포괄하도록 여기에 넣습니다.

                                                        +---------------+
  +-------------+   +--------+   +------+     LAN IP    | Computer that |
  |whatsmyip.com|---|Internet|---|router|---------------| wants to know |
  +-------------+   +--------+   +------+  192.168.1.x +----+ WAN IP    |
you're 54.234.1.33                                     |eth0|-----------+
                                                       +----+

# 1st server
% wget -qO - ipv4bot.whatismyipaddress.com
54.234.1.33

# 2nd server
% curl 'https://api.ipify.org?format=json'

{"ip":"54.234.1.33"}
% curl 'https://api.ipify.org?format=txt'
54.234.1.33

# 3rd server
% curl -s checkip.dyndns.org | sed 's#.*Address: \(.*\)</b.*#\1#'
54.234.1.33

자세한 내용은 여기를 참조하세요:방법: 명령줄에서 외부 IP 주소 확인.

인용하다

관련 정보