Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > информация о пользователях linux |
Автор: boostcoder 25.10.2010, 00:26 |
всем привет. два вопроса: 1. как получить список всех пользователей? 2. как определить продолжительность текущего сеанса пользователя? спасибо. зы по поводу 1: можно прочесть имена каталогов в /home. еще вариант, парсить /etc/passwd и из него извлечь имена пользователей. но что-то мне оба таких варианта кажутся нелепыми) по поводу 2го вообще мыслей нет. |
Автор: xvr 25.10.2010, 11:31 | ||||
Совсем всех или залогиненных? Если первое, то парсинг passwd вполне нормально (точнее парсинг ypcat passwd), если второе - то парсинг вывода от ps (на имена пользователей)
|
Автор: boostcoder 25.10.2010, 11:35 |
всех. ман про "ypcat" не знает. поясните.. а как это в ps должно выглядеть? точнее что именно мне нужно от ps? |
Автор: djamshud 25.10.2010, 11:43 |
По поводу первого - хз. Пассвд и хом парсить нелепо. Домашние директории могут храниться где угодно, а авторизация происходить через LDAP - насколько я понимаю, в таком случае /etc/passwd вообще не будет, поправьте, если я не прав. По поводу второго - w, who. Добавлено через 1 минуту и 7 секунд А в первом наверное может помочь pam... |
Автор: xvr 25.10.2010, 11:54 | ||||||||
У меня знает:
Как то так:
Или who - как правильно заметил djamshud PS. Специально проверил - who и w дампуют не всех ![]() |
Автор: MAKCim 25.10.2010, 12:22 | ||
нативный способ - читать /var/run/utmp (man utmp) Добавлено через 12 минут и 6 секунд
|
Автор: MAKCim 25.10.2010, 12:41 |
соответственно задача 2 решается нахождением max(curr_time - ut_tv.tv_sec) по каждому элементу utmp для нужного юзера |
Автор: boostcoder 25.10.2010, 12:43 |
MAKCim, спасибо за пример. я так понял, что этот код, предоставит информацию об активных пользователях? или о всех? |
Автор: MAKCim 25.10.2010, 13:35 |
boostcoder, задача 2 справедлива только для активных (залогиненых) вроде как... для 1 тупо как уже сказали пропарсить /etc/passwd |
Автор: boostcoder 25.10.2010, 15:11 |
всем спасибо. вопрос закрыт. |
Автор: xvr 25.10.2010, 18:50 | ||
Собственно w и who это и делают. Но некоторых он все же не показывает, вот например:
|
Автор: MAKCim 25.10.2010, 23:13 |
заниматься парсингом вывода конкретной программы дело неблагодарное и неправильное ;) |