Запустить скрипт после входа GDM в GNOME?

Недавно я купил ноутбук и написал сценарий, который устанавливает обратный туннель ssh если какой-то пользователь входит в систему через GDM. Я сделал это, потому что в прошлом у меня был украден ноутбук и хотелось бы быть готовым на случай, если это случится снова.

Я поместил скрипт в каталог, ниже которого GDM запускается как root, когда пользователь входит в систему.

 /etc/gdm/PostLogin/Default 

Вот сценарий:

 if [[ "$(users)" = "user user" ]]; then while (( "$(netstat -an | grep -E "\:22[ \t]+" | grep ESTABLISHED | \ wc -l)" < "1" )) do ssh -fvN -p 22 -R tunnelport:localhost:sshdport user@example.com sleep 20 done fi 

Скрипт запускается, если я уже вошел в систему, но если я вхожу в систему через GDM, то первый оператор if завершится с ошибкой. Если я удалю оператор if она зависает в команде ssh . Любые идеи о том, что я могу сделать?

One Solution collect form web for “Запустить скрипт после входа GDM в GNOME?”

Я бы включил этот скрипт так, чтобы он был подробным и записывал его вывод в файл, чтобы вы могли более легко определить, что его отключает.

Для увеличения многословности добавьте это перед первым оператором if .

 set -x 

Чтобы заставить скрипт записывать все в файл, вы можете использовать этот метод, описанный в этом SO Q & A под названием « Как я могу полностью зарегистрировать все действия скриптов bash? , Из этого сообщения больше всего выписано:

 #!/bin/bash exec 3>&1 4>&2 trap 'exec 2>&4 1>&3' 0 1 2 3 exec 1>log.out 2>&1 # Everything below will go to the file 'log.out': 

Объяснение:

  1. exec 3>&1 4>&2

    Сохраняет дескрипторы файлов, чтобы они могли быть восстановлены до того, как они были до перенаправления, или использовали их для вывода на все, что было до следующего перенаправления.

  2. trap 'exec 2>&4 1>&3' 0 1 2 3

    Восстановите дескрипторы файлов для определенных сигналов. Обычно не требуется, так как они должны быть восстановлены, когда выйдет суб-оболочка.

  3. exec 1>log.out 2>&1

    Перенаправить stdout в файл log.out, затем перенаправить stderr в stdout. Обратите внимание, что порядок важен, когда вы хотите, чтобы они переходили в один и тот же файл. stdout необходимо перенаправить, прежде чем stderr будет перенаправлен на stdout.

  • SSH туннели заставляют новый туннель и убивают старую сессию
  • X Window открывается с экрана
  • Правильное закрытие туннеля SSH с несколькими точками
  • Проблема с несколькими файлами, связанными с SSH-соединениями
  • Как сделать SSH туннель в качестве демона?
  • Канал 0: сбой при открытии: административно запрещено: открыть сбой
  • Двойная переадресация портов - SSH
  • Ошибка туннелирования SSH: «канал 1: сбой при открытии: административно запрещено: открыть сбой»
  • Понимание и просмотр, как порты выделяются туннелями ssh?
  • ограничение квоты на передачу TCP пользователя
  • SSH-туннелирование - локальные и удаленные случаи использования
  • Linux и Unix - лучшая ОС в мире.