Grep

訪問 URL 時觸發操作

  • April 6, 2019

假設我發送了一封電子郵件,其中包含指向我的網站的連結,我真的希望他會訪問它(手指交叉的風格):

http://www.example.com/?utm_source=email392

或者

http://www.example.com/somefile.pdf?utm_source=email392

如何通過定期檢查使 Linux 在訪問此 URL 時觸發一個操作(例如向自己發送一封自動電子郵件)/var/log/apache2/other_vhosts_access.log

我無法在 PHP 級別執行此操作,因為我需要為各種來源/網站執行此操作(其中一些使用 PHP,有些不使用,只是連結到要下載的文件等;即使對於使用 PHP 的網站也是如此,我不想修改每個index.php從那裡做,這就是為什麼我更喜歡 Apache 日誌解析方法)

使用 bash 程序替換進行實時日誌監控:

#!/bin/bash

while IFS='$\n' read -r line;
do
   # action here, log line in $line

done < <(tail -n 0 -f /var/log/apache2/other_vhosts_access.log | \
        grep '/somefile.pdf?utm_source=email392')

程序替換將內部管道的輸出提供給讀取循環<(...)。日誌行本身被分配給變數$line

使用 監視日誌tail -f,在寫入日誌時輸出行。如果您的日誌文件由logrotate定期移動,請添加--follow=name--retry選項來監視文件路徑,而不僅僅是文件描述符。

tail的輸出通過管道傳輸到grep,它過濾與您的 URL 匹配的相關行。

引用自:https://unix.stackexchange.com/questions/391813