| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
заниматься парсингом вывода конкретной программы дело неблагодарное и неправильное ;) |