2012-02-08 3 views
1

Я пытаюсь обновить сценарий оболочки UNIX для запуска, только если пользователь НЕ зарегистрирован в своей учетной записи UNIX. Я рассматривал возможность использования пальцаКак узнать, зарегистрирован ли пользователь в UNIX

Затем посмотреть текст «On, так как» ...

Однако я обнаружил, что, когда я палец определенной учетной записи пользователя, что я только зарегистрированную в через Putty, что пользователь якобы " Никогда не вошел.

Как узнать, будет ли пользователь физически зарегистрирован в системе UNIX?

Спасибо,

+0

Какую версию Unix вы используете? – Dan

+0

Извините Solaris 10. Я нашел команду «w» для предоставления полезной информации о пользователях. Является ли это надежной командой для определения текущего входа? – iowatiger08

ответ

3

"who -a" ...? Показывает связанный терминал с подключенным пользователем.

+0

кто -а показывает несколько экземпляров пользователя, а также другие логины. Как я могу определить, кто или кто из них является текущим? Заранее спасибо. – iowatiger08

+1

Ну, если у вас есть логин пользователя, которого вы хотите проверить, запустите простой ps -u | wc -l, если выход равен 1, значит, у него нет запущенных процессов (т. е. он не подключен), иначе он есть. –

2
+0

К сожалению, мне нужно иметь возможность сделать это удаленно. команда w, похоже, позволяет мне узнать о других пользователях, у которых нет. – iowatiger08

1

Команда last может быть полезна, когда рассказывается история, когда кто-то вошел в систему и как они туда попали. EG, вы можете узнать, есть ли это из удаленного входа в систему (ssh) или с терминала (реального tty) и т. Д.

+0

Последняя команда дает намного больше, чем мне нужно. Я ищу, чтобы узнать, вошел ли пользователь в систему перед выполнением другого скрипта. последняя команда дает полный список операций. – iowatiger08

+0

@ iowatiger08, используйте 'last -n 1 ', чтобы ограничить последний вход. – CoreyStup

0

В качестве альтернативы вы можете легко написать собственный скрипт Perl/php/Python, чтобы напрямую проверять журналы Utmp, относительно того, зарегистрирован ли пользователь в настоящее время, например

Python: isLoggedIn.py [идентификатор пользователя]

#!/usr/bin/python 
from pyutmp import UtmpFile 
import sys 

for utmp in UtmpFile(): 
    # utmp is a Utmp object 
    if utmp.ut_user_process: 
     if utmp.ut_user in sys.argv: 
      print "User: %s is logged in\n" % (utmp.ut_user) 
      sys.exit(0) 
print "Not logged in\n" 
sys.exit(1) 
+0

Я получаю 'ИмпортError: Нет модуля с именем pyutmp' при запуске скрипта – dds

Смежные вопросы