Apache-2.2

如何從我的 Apache AWStats 伺服器日誌中僅獲取 IP 地址?

  • August 14, 2013

在伺服器日誌中其他數據混亂的情況下,我無法從我的站點伺服器日誌中獲取我的 IP 地址。在我破解打開 Excel 之前,我知道有辦法做到這一點,因為我發現與我想要的相反,從 AWS 中刪除 IP :

cat web.log | awk '{$1=$2=$3=""}1' > web-no-ip.log

這種事情的一步一步或備忘單將是驚人的。

我假設 IP 地址的典型格式是X.X.X.Xwhere Xis between

$$ 0,255 $$. 知道這一點,grep 可以非常出色地完成這項工作:

grep -oP '(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])(\.(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){3}' filename.txt

(0|[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])將匹配 0 到 255 之間的任何數字,包括前導零 - 例如,0、255、019 等。但是,正如所寫,它將匹配1.1.1.1.5(五個八位字節)之類的內容。這也不會跟踪 IPV6 地址。

如果您希望日誌僅包含看起來像 的有效 IP 地址X.X.X.X,並且我們可以假設這X不會是無效的,您可以使用更簡單的表達式:

grep -oP '\d{1,3}(\.\d{1,3}){3}' filename.txt

引用自:https://serverfault.com/questions/531074