в цикле вывод команды last.
Начинаем мы с того, что обходим в цикле вывод команды last. На нашей системе он выглядит примерно так:
Cindy pts/10 sinai.ccs.neu.ea Fri Mar 27 13:51 still logged in
michael pts/3 regulus. ccs. neu Fn Mar 27 13:51 still logged I"'
david pts/5 fruity-pebbles.с Fri Mar 27 13:48 still logged in
deborah pts/5 grape-nuts.ccs.n Fri Mar 27 11:43 - 11:53 (00:09)
barbara pts/3 152,148.23,66 Fri Mar 27 10:48 - 13:20 (02:31)
Jerry pts/3 nat16. asoer-tec с Fri Mar 27 09:24 - 09:26 (00:01)
Заметьте, что имена узлов (в 3-й колонке) в выводе команды last усечены. В главе 9 мы уже говорили об ограничениях на длину имени узла, но до сих пор мы обходили стороной это препятствие. Когда мы попробуем заполнить нашу структуру данных, проблемы станут очевидными.
Раньше в цикле while мы пытались пропустить строчки, содержащие данные, которые нас не интересуют. Как правило, проверка особых случаев в самом начале цикла до какой-либо обработки данных (на-
пример, при помощи spnt()) - неплохая идея. Это позволяет программе быстро определить, что можно пропустить определенную строчку и перейти к дальнейшему чтению данных:
while (<LAST>){
игнорируем специальных погьзонателей
next if /~rePoot\s]"shutdown\s|~flp\s/:
если использовался ключ -и д/'.я определения конкретного
пользователя, пропускаем все записи, не относящиеся к
нему (имя сохраняется в $opt_u функцией getopts)
next if (defined $opt_u && !/"$opt_u\s/);
игнорируем вход с консоли X
next if /:0\s+:0/;
# ищем имя пользователя, терминал и имя удаленного узла
($user, $tty,$host) = split;
игнорируем, если запись в журнале имеет "плохое" имя
пользователя
next if (length($user) < 2);
игнорируем, если для данного имени нет информации о домене
next if $host !" Д./;
ищем доменное имя узла (см. приведенное ниже объяснение)
$dn = &domain($host);
игнорируем, если доменное имя фиктивное
next if (length ($dn) < 2);
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий