Тук идеята ми е, че на моменти получавам писмо от конкретен адрес ( или не) и съдържанието му е много важно. Толкова важно, че искам да го видя веднага в най- лесния вариант. Да речем че получавам като важно съдържание едно изречение (стринг).
Решението което имам (използвам собствен mail server с root access): Пускам tcpdump да логва всички пакети на 25 порт и след това парствам за конкретния стринг. Ето един много лесен пример за 2 мин:
tcpdump -s 1500 -lXvvi eth3 port 25|awk -F ' ' '{print $10}' >> /tmp/aa.txt
Ето едно малко php което парсва и показва ако го има:
function dhs_lr_str($a,$b,$c,$num=1){$a=explode("$a",$c);$b=explode("$b",$a[$num]);return addslashes(trim($b[0]));};
$buffer=file_get_contents("/tmp/aa.txt");
$buffer=str_replace("\n",",$buffer);
$buffer = preg_replace('#\r?\n#', ", $buffer);
$buffer = preg_replace('/\s\s+/', ' ', $buffer);
preg_match_all("/lqva_chast(.*?)dqsna_chast/", $buffer, $matches);
$search_words=array_unique($matches[1]);
echo "<table border='1'><tr><td><b>N</td><td><b>Link</td></tr>";
foreach ($search_words as $value)
{
$i++;echo "<tr><td><b>$i</td><td>$value</td></tr>";
};
echo "</table>";
Може и с bash:
#Премахва \n
cat /tmp/aa.txt|sed -e :a -e '$!N;s/\n//;ta' > /tmp/a.txt
#Парсва търсения стринг между "lqva_chast" X "dqsna_chast"
cat /tmp/a.txt|awk -F 'lqva_chast' '{print $2}'|awk -F 'dqsna_chast' '{print $1}'
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]