| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Perl в Линуксе] Вывод списка user'ов |
| Автор: Dodge 24.12.2007, 22:35 |
| Нужно вывести список user'ов которые вошли в систему в понедельник. Программу нужно написать в Perl и проверить в командной строке линукса. Вывод пользователей нужно оформить примерно так: если в командной строке Линукса написать last, то выведет всех пользователей. А результатом этой программы должен быть только вывод user'ов, которые вошли в систему в понедельник. |
| Автор: t_gran 25.12.2007, 12:58 |
| А shell-овские команды типа awk и grep использовать можно? |
| Автор: Dodge 25.12.2007, 15:45 |
| Не совсем понимаю что ты имеешь в виду. если эти твои команды дествительно можно использовать в синтаксисе perl'a то наверное можно. Начало программы такое: #!usr/bin/perl далее код программы |
| Автор: t_gran 26.12.2007, 05:03 | ||||
Просто если можно использовать shell комманды, то получаеться
Если же нет, то тут проблема заключается что файл /var/log/wtmp бинарный и имеет структуру:
Тут нужно уже подумать как с помощью Perl прочитать бинарный файл. |
| Автор: arto 26.12.2007, 13:44 |
| 1. @LAST= exec "last | grep пн"; -- 2 ошибки. 2. "файл /var/log/wtmp бинарный и имеет структуру" -- зависит от типа ос, для линуха: "Linux utmp entries conform neither to v7/BSD nor to System V; they are a mix of the two." |
| Автор: t_gran 27.12.2007, 05:29 |
| arto, а ну ка скажи, какие же это ошибки! Знаешь, не надо клеветать пока не проверил. А на счет второго ты в принципе прав. |
| Автор: t_gran 27.12.2007, 09:14 |
| Автор: Dodge 27.12.2007, 22:16 |
| Все я сделал, с помощью регулярных выражений.. Все очень легко оказалось... |
| Автор: arto 29.12.2007, 21:39 |
| 1. вы уверены, что локаль всегда русская? # last | head -1 artо pts/4 localhost Wed Dec 26 08:37 still logged in 2. exec заменяет текущий процесс новым, в вашем случае шеллом с командами. # cat > a.pl #! /usr/bin/perl my @LAST = exec "last | head -1"; print "We got last:",@LAST,"\n"; print "Done\n"; ^D # perl a.pl artо pts/4 localhost Wed Dec 26 08:37 still logged in # Тщательнее надо... |
| Автор: t_gran 8.1.2008, 03:55 |
| Вот это объяснение так объяснение |