Дата Входа в систему пользователя и время входа в систему

(Адаптированный из Linux: wmctrl не может открыть дисплей, когда сессия инициировала через ssh+screen),

ДИСПЛЕЙ и ПОЛНОМОЧИЯ

Для X программ нужны два сведения для соединения с X дисплеями.

  • Этому нужен адрес дисплея, который обычно является :0 когда Вы зарегистрированы локально или :10, :11, и т.д., когда Вы зарегистрированы удаленно (но число может измениться в зависимости от того, сколько X соединений активны). Адрес дисплея обычно обозначается в DISPLAY переменная среды.

  • Этому нужен пароль для дисплея. X паролей дисплея называют волшебными cookie. Волшебные cookie не указаны непосредственно: они всегда хранятся в X авторитетных файлах, которые являются набором записей формы “дисплей :42 имеет cookie 123456”. X авторитетных файлов обычно обозначаются в XAUTHORITY переменная среды. Если $XAUTHORITY не установлен, использование программ ~/.Xauthority.

Вы пытаетесь действовать на окна, которые отображены на Вашем рабочем столе. Если Вы - единственный человек, использующий Вашу настольную машину, вероятно, что отображаемое имя :0. Нахождение местоположения X авторитетных файлов более трудно, потому что с gdm, как настроено под Debian сжимают или Ubuntu 10.04, это находится в файле со случайным образом сгенерированным именем. (У Вас не было проблемы прежде, потому что более ранние версии gdm использовали настройку по умолчанию, т.е. cookie, сохраненные в ~/.Xauthority.)

Получение значений переменных

Вот несколько способов получить значения DISPLAY и XAUTHORITY:

  • Можно систематически запускать экранную сессию с рабочего стола, возможно, автоматически в сценариях входа в систему (от ~/.profile; но сделайте это только если вход в систему под X: тест, если DISPLAY установлен на начало значения : (который должен покрыть все случаи, с которыми Вы, вероятно, встретитесь)). В ~/.profile:

    case $DISPLAY in
      :*) screen -S local -d -m;;
    esac
    

    Затем на ssh сессии:

    screen -d -r local
    
  • Вы могли также сохранить значения DISPLAY и XAUTHORITY в файле и отзыве значения. В ~/.profile:

    case $DISPLAY in
      :*) export | grep -E '(^| )(DISPLAY|XAUTHORITY)=' >~/.local-display-setup.sh;;
    esac
    

    На ssh сессии:

    . ~/.local-display-setup.sh
    screen
    
  • Вы могли обнаружить значения DISPLAY и XAUTHORITY от рабочего процесса. Это более трудно автоматизировать. Необходимо выяснить PID процесса, это подключено к дисплею, от которого Вы хотите продолжить работать, затем получить переменные среды /proc/$pid/environ (eval export $( –  Paresh Mayani 14.09.2010, 17:03

  • 2
    ? последний "$username" обеспечивает "Дату входа в систему" и "Разовый входом в систему". Второй член Вашего предложения не ясен для меня, возможно, его мой английский язык, возможно, его Ваш... "Имя пользователя принято от пользователя [...]"? –  echox 14.09.2010, 20:13
  • 3
    @Paresh: у меня закончились способы интерпретировать Ваш вопрос. Если мой ответ все еще не помогает, попытайтесь делать свой вопрос более ясным. –  Gilles 'SO- stop being evil' 14.09.2010, 20:34
  • 4
    @Paresh: last $USER_NAME покажет текущим пользователям также. Это покажет что-то как username ttyp0 192.168.1.100 Tue Sep 13 13:09 still logged in –  Stefan Lasiewski 15.09.2010, 01:12
  • 5
    @Gilies, позволяют мне очистить то, что я хочу выполнить на самом деле, я хочу сделать сценарий оболочки, в котором я принимаю имя пользователя как "$username чтения", и затем я хочу проверить, является ли пользователь входом в систему или нет, если да затем я хочу выбрать их разовое входом в систему и дату входа в систему, спасибо за поддержку –  Paresh Mayani 15.09.2010, 08:47
  • На Linux, last -R $username | awk '/still logged in/ {print $3,$4,$5,$6}' ничего не возвратит, если пользователь не будет зарегистрирован, иначе список даты/времени для каждой активной сессии.

    Другие unixes, которые не знают -R для опции продлиться (который подавляет имя хоста) будет нужна некоторая модификация.

    3
    27.01.2020, 19:40

    Теги

    Похожие вопросы