Я выполняю сценарий UNIX, который проходит через файл журнала и выводит узлы, из которых произошли веб-соединения. Я достичь с помощью следующего сценарияUNIX script date extract
if [ "$1" = "hosts" ]; then
grep "$2" $logs | awk '{print $1}' | uniq > templist
lines=`wc templist | awk '{print $1}'`
while [ "$number" -le "$lines" ]
do
hostip=`sed -n "$number p" templist`
`nslookup -sil "$hostip" | grep -i "name" | awk '{print $4}' >> lookup`
number=`expr $number + 1`
done
echo " "
echo " Host IP Address "
echo " --------------- "
paste templist lookup
rm lookup
rm templist
exit 1
fi
Однако, меня я не могу понять, как вывести даты, а также. Я пытался что-то вдоль линий:
if [ "$1" = "hostsdate" ]; then
grep "$2" $logs | awk '{print $1}'| uniq > templist
grep "$2" $logs | awk '{print $4,$5}'| uniq > datelist
lines=`wc templist | awk '{print $1}'`
while [ "$number" -le "$lines" ]
do
hostip=`sed -n "$number p" templist`
`nslookup -sil "$hostip" | grep -i "name" | awk '{print $4}' >> lookup`
number=`expr $number + 1`
done
echo " "
echo " Access Date Host IP Address Host Name "
echo " --------------------------------------------------------- "
paste templist lookup >final
paste datelist final
rm lookup
rm templist
rm final
rm datelist
exit 1
fi
Но это не сработало .... формат файла журнала я работаю выглядит следующим образом:
153.35.83.237 - - [05/Oct/1997: 01: 10: 48 +0100] "GET /User/GNJames/netzee/Dice.class HTTP/1.0" 304 -
153.35.83.237 - - [05/Oct/1997 : 01: 10: 49 +0100] «GET /User/GNJames/netzee/Board.class HTTP/1.0» 304 -
153.35.83.237 - - [05/Oct/1997: 01: 10: 50 + 0100] "GET /User/GNJames/netzee/Title.class HTT Р/1.0" 304 -
153.35.83.237 - - [05/Окт/1997: 01: 10: 51 +0100] "GET /User/GNJames/netzee/JavaButton.class HTTP/1.0" 304 -
Любая помощь была бы принята с благодарностью!
Большое спасибо, я пытался уменьшить количество поисков. Я пошел с первым подходом. Также я заметил, что вы используете хост вместо nslookup. Это, чтобы обойти ошибки разрешения адресов nslookup? –
Я использую хост просто потому, что его выход по умолчанию проще разобрать, поскольку он просто выдает одну строку :-) –