Я хотел бы использовать скрипт, чтобы узнать имя пользователя - пользователя, который в настоящее время находится на физической консоли (у кого есть команда клавиатуры, мыши и графического дисплея)?
Я не просто хочу знать, кто запускает X (поскольку текущая консоль может быть переключена на другой терминал и другого пользователя).
Чтобы уточнить:
такие команды, как w
и who
т. Д. Показывают, кто зарегистрирован на каком терминале. Это просто Я хотел бы знать, однако, кто в настоящее время владеет физической консолью (дисплей, клавиатура и т. Д.). Например, если два пользователя запускают дисплеи: 0 и: 1, и я могу переключаться между дисплеями с помощью ctrl+ alt+ 7и ctrl+ alt+ 8, я хотел бы знать, какой пользователь в настоящее время имеет связь между его или ее дисплеем и фактическим, физическим экраном ,
Еще одно уточнение:
мне не интересно знать свое имя пользователя. У меня есть скрипт, работающий от имени другого пользователя или пользователя root, который должен знать, кто использует физический дисплей. Может быть несколько X-сессий, запущенных разными пользователями, некоторые из них виртуализированы, некоторые подключены к удаленному X-серверу, но меня интересует только тот, который фактически отображает вывод на мониторе.
Еще одно уточнение:
какой бы ни была команда, вывод должен быть другим после нажатия Ctrl+ Alt+ F1(переключение на другую виртуальную консоль).
Ответы:
Боюсь, я не могу дать вам конкретный ответ (потому что я плохо знаю технологию), но я полагаю, что вы можете найти его, используя D-Bus и ConsoleKit.
Например, когда я переключаюсь с X на VT и обратно, я получаю следующее прослушивание
dbus-monitor
:В частности, вы можете использовать метод GetActiveSession . Вот как с
dbus-send
(может потребоватьсяsudo
):Затем, в зависимости от вашего приложения, вы захотите проверить свойства возвращаемого объекта, которые должны быть путем к объекту для сеанса .
источник
dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session2 org.freedesktop.ConsoleKit.Session.GetUser
которая отвечает с текущим идентификатором пользователя. Оттуда библиотечная функция getpwuid может получить имя пользователя.Вы можете использовать команду w, чтобы увидеть, кто вошел в систему. Время простоя и что должно сказать вам, что выполняется - в этом случае gdm указывает активный вход в систему, а время простоя указывает, что пользователь не был в системе в течение 2 дней. Сравните это с логином от blackbeauty, который имеет время простоя 0,00, что указывает на то, что он в данный момент используется.
источник
Есть много способов:
whoami
w
echo $USER
logname
источник
Другая команда
Показывает текущее имя пользователя logeed
источник