Запустить (системный) скрипт при входе и / или выходе из SSH

Чтобы решить эту проблему, я предлагаю вам выполнить следующую процедуру установки:

При установке Ubuntu во время выбора места и типа установки будьте осторожны, чтобы выбрать удалить все предыдущие установки Ubuntu, а затем выбрать бесплатную неиспользуемое смежное пространство для установки Ubuntu.

Примечание: Вышеупомянутый процесс удаляет Ubuntu и данные из раздела Ubuntu .


Это должно работать. Если у вас все еще есть проблема, вы можете выполнить следующие шаги, чтобы исправить проблемы grub:

загрузитесь с live cd или live usb и введите следующие команды:

  1. Чтобы добавить восстановление хранилища в хранилище:

    sudo add-apt-repository ppa:yannubuntu/boot-repair
    
  2. Чтобы обновить хранилище:

    sudo apt-get update
    
  3. Чтобы установить восстановление хранилища:

    sudo apt-get install -y boot-repair
    
  4. После завершения установки запустите boot-repair на терминале, введя следующую команду или выберите ее с помощью Система-> Администрация-> Восстановление загрузки .

    ]
    boot-repair
    

Вы также можете следовать подробным инструкциям здесь:

http://www.howopensource.com/2012/05/reinstall-recover-grub- из-убунту-12-04-жить-CD-USB /

12
задан 07.06.2016, 08:00

5 ответов

Я уже видел это совпадение событий в лог-файле (что позволит вам гибко сопоставлять что угодно). Эта страница плохо отформатирована, но она может помочь вам начать: https://help.ubuntu.com/community/AudibleLogs#Play с esound

0
ответ дан 24.04.2019, 21:15
  • 1
    Я думаю, что вы / они имеют в виду espeak вместо esound? – mannyglover 30.10.2010, 14:59

Вы можете навязать команду своим SSH-пользователям вместо той, которую они запрашивают (или их оболочке, если они не дают конкретной команды). Это можно сделать, указав для этой команды что-то вроде ForceCommand /root/ssh-wrapper в /etc/ssh/sshd_config (не имеет значения, где находится скрипт или как он называется, просто убедитесь, что он выполняется всеми пользователями, а файл конфигурации sshd указывает на Это). Вам также нужно перезагрузить / перезагрузить sshd. Исходная команда доступна для принудительной команды как $SSH_ORIGINAL_COMMAND.

Я только что взломал этот сценарий вместе:

#! /bin/sh

# add logger options when needed
log="logger -t ssh-wrapper"

# find IP address
ip=`echo $SSH_CONNECTION | cut -d " " -f 1`

$log $USER login from $ip
espeak "$USER just logged in from $ip" > /dev/null 2>&1

$log command: ${SSH_ORIGINAL_COMMAND:-shell}
${SSH_ORIGINAL_COMMAND:-shell}

$log $USER logout
espeak "$USER just logged out" > /dev/null 2>&1

Теперь каждый раз, когда я вхожу в систему или выходу из системы, голос сообщает мне об этом, и запись в журнале записывается в системный журнал. Это также регистрирует команду. Вы можете использовать что-то вроде следующего, чтобы «следить» за вашим использованием sshd:

tailf /var/log/syslog | grep ssh-wrapper

Обратите внимание, что этот скрипт в основном не проверен, поэтому используйте его на свой страх и риск! ; -) [ 1111]

PS: помните, что этот скрипт запускается от имени пользователя, вошедшего в систему, поэтому вы не можете делать все, что хотите, если измените его, чтобы добавить больше функций ...

0
ответ дан 24.04.2019, 21:15
  • 1
    Привет, есть ли способ обнаружить ситуацию, когда пользователь просто закрыл окно с ssh-клиентом. Ваш скрипт не перехватывает эту ситуацию .. Спасибо. – M.Herzkamp 08.07.2015, 03:05
  • 2
    Следует ли заменить shell в $ {SSH_ORIGINAL_COMMENT: -shell} фактическим путем к оболочке, например, / Бен / Баш? Когда я просто пытаюсь это запустить, он жалуется, что такой команды как shell не существует. На самом деле, я думаю, что вы имели в виду $ SHELL? Это должно запустить указанную пользователем оболочку. – code_dredd 27.05.2017, 14:43

Я думаю, PAM - лучший вариант. Он общесистемный и не может быть переопределен конфигурационными файлами пользователя.

Вы можете выполнить следующие шаги. Они работали для меня на Ubuntu 14.04.4 LTS.

Выполнить:

$ sudo pico /opt/custom/bin/info-session.sh

Редактировать этот пустой файл и добавить следующие строки:

#!/bin/sh

[ "$PAM_TYPE" = "open_session" ] || exit 0

INFO=$(date +"%Y/%m/%d %T $PAM_USER ($PAM_RHOST) $PAM_SERVICE $PAM_TTY") # You can customize message.

echo "PAM access: $INFO" | write user > /dev/null 2>&1 # See Note 1.

exit 0

После этого дать разрешение на выполнение сценарию:

$ sudo chmod ugo+x /opt/custom/bin/info-session.sh
[1125 ] Теперь запустите:

$ sudo pico /etc/pam.d/common-session

Добавьте эти строки в конец файла:

# Modified by user:
session optional pam_exec.so /opt/custom/bin/info-session.sh

Нет необходимости перезапускать какой-либо сервис. Обратите внимание, что этот сценарий также будет запускаться, когда пользователь входит в систему с терминала вместо SSH.

Примечание 1: Вы можете направить на espeak или любой другой процесс, который соответствует вашим потребностям (электронная почта, push-уведомления и т. Д.). Если вы используете write и , пользователь вошел в систему, он или она увидит выходные сообщения непосредственно на своем терминале.

Ссылки:
https://blog.stalkr.net/2010/11/login-notifications-pamexec-scripting.html
[ 1113] https://blog.redbranch.net/2014/06/04/pam_exec-so-execute-commands-on-user-login/

Похожие материалы: [ 1119]
Как настроить оповещение по электронной почте при успешном входе в систему через ssh?
https://serverfault.com/questions/400613/ каким образом я могу настроить мой сервер, чтобы уведомлять меня каждый раз, когда он удаленно доступен через
https://serverfault.com/questions / 395393 / электронный-уведомление-о-каждый-SSH-подключение к Linux-сервер

0
ответ дан 24.04.2019, 21:15

(Ответьте перекрестно на один и тот же вопрос на ServerFault )

Просто напишите сценарий, чтобы делать все, что вы хотите, а затем вставьте его в /etc/profile или, возможно, /etc/bash.bashrc в зависимости на ваши нужды. Изменения в этих файлах будут применяться ко всем пользователям. Однако я не уверен, как вы будете уведомлять о выходе из системы при таком подходе.

В качестве альтернативы, другим способом сделать это было бы простое наблюдение за демоном /var/log/auth для новых (и завершающих) сессий ssh. Таким образом он сможет отправлять уведомления как при входе, так и при выходе из системы.

0
ответ дан 24.04.2019, 21:15

Вы можете использовать sshrc (man sshd, ищите sshrc)

ssh выполнит / etc / ssh / sshrc, если он существует, и вы можете запустить один скрипт (или вызвать несколько скриптов) оттуда [ 113]

вы можете вызвать любую переменную bash, например $USER, или получить IP через

read -d " " ip <<< $SSH_CONNECTION

, вы можете написать скрипт для тестирования или записи того, что вы когда-либо захотите.

Сценарий выхода из системы ... ну, это то, что я ищу! : D

0
ответ дан 24.04.2019, 21:15

Теги

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