[英]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.