簡體   English   中英

如何從bash腳本確定IP地址?

[英]How can I determine the IP address from a bash script?

如何以跨平台兼容的方式從Bash獲取當前計算機的IP地址? 對於Windows Linux和Mac OS,我需要以相同的方式獲取IP地址。

我當前正在使用docker-compose創建完整部署的本地版本,但是無法使用localhost或127.0.0.1訪問它,我必須引用當前計算機的IP地址,例如curl 192.168.0.23:80

目前,我讓用戶手動設置IP地址:

# Return true if we pass in an IPv4 pattern.
not_ip() {
  rx='([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'

  if [[ $1 =~ ^$rx\.$rx\.$rx\.$rx$ ]]; then
    return 1
  else
    return 0
  fi
}

# Ensure lower case
OPTION=$(echo $1 | tr [:upper:] [:lower:])

case "$OPTION" in
"test")
    LOCAL_IP=${LOCAL_IP:-$2}

    if not_ip "$LOCAL_IP" ; then
      echo The test command couldn\'t resolve your computers Network IP. $LOCAL_IP
      echo
      help_comment
      exit 1
    fi
    python -m webbrowser "http://${LOCAL_IP}:80/" &
    ;;
esac

但是,我希望能夠在無需用戶設置任何環境變量的情況下獲得此功能,尤其是在處理Windows計算機時。

有任何想法嗎?

由於操作系統特定的命令,您需要在使用以下主機之前檢測主機

Windows(Cygwin命令行)

LOCAL_IP=${LOCAL_IP:-`ipconfig.exe | grep -im1 'IPv4 Address' | cut -d ':' -f2`}

蘋果系統

LOCAL_IP=${LOCAL_IP:-`ipconfig getifaddr en0`} #en0 for host and en1 for wireless

Linux的

LOCAL_IP=${LOCAL_IP:-`ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'`}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM