Вместо этого используйте df -H. Разница, которую вы видите, связана с различием в реальных GB / TB (коэффициент 1024) и продаж GB / TBs (коэффициент 1000).
Поскольку метод sshrc не работает, если у пользователя есть свой файл ~/.ssh/rc, я объясню, как это сделать с помощью pam_exec в качестве предложенного @adosaiguas. Хорошо, что это также можно легко адаптировать к типам входа, отличным от ssh (например, к локальным входам или даже ко всем входам), подключаясь к другому файлу в /etc/pam.d/.
Сначала вам нужно чтобы отправлять почту из командной строки. Есть и другие вопросы.
Тогда вам нужен исполняемый файл сценария login-notify.sh (например, я помещал его в /etc/ssh/) с помощью mailx (который, вероятно, уже установлен). следующего содержания. Вы можете изменить переменные, чтобы изменить тему и содержание уведомления по электронной почте. Не забудьте выполнить chmod +x login-notify.sh, чтобы сделать его исполняемым.
#!/bin/sh
# Change these two lines:
sender="sender-address@example.com"
recepient="notify-address@example.org"
if [ "$PAM_TYPE" != "close_session" ]; then
host="`hostname`"
subject="SSH Login: $PAM_USER from $PAM_RHOST on $host"
# Message to send, e.g. the current environment variables.
message="`env`"
echo "$message" | mailx -r "$sender" -s "$subject" "$recepient"
fi
После этого вы можете добавить следующую строку в /etc/pam.d/sshd:
session optional pam_exec.so seteuid /path/to/login-notify.sh
Для тестирования модуль включается как optional, поэтому вы можете войти в систему, если выполнение завершилось с ошибкой. После того, как вы убедитесь, что он работает, вы можете изменить optional на required. Тогда логин будет недоступен, если выполнение вашего сценария крючка не будет успешным (если это то, что вам нужно).
Для тех из вас, кто нуждается в объяснении того, что такое PAM и как он работает, здесь очень хороший.
Мы использовали monit для мониторинга процессов в наших linux-блоках. monit также может оповещать по электронной почте о успешных входах по ssh. Наш конфигуратор monit выглядит так:
check file ssh_logins with path /var/log/auth.log
# Ignore login's from whitelist ip addresses
ignore match "100.100.100.1"
# Else, alert
if match "Accepted publickey" then alert
Примечание: Конфигурация почтового сервера, формат электронной почты и т. Д. Должны быть установлены в файле monitrc
Update: Написал более подробный monit на этом
Поместите следующее в /etc/profile:
if [ -n "$SSH_CLIENT" ]; then
TEXT="$(date): ssh login to ${USER}@$(hostname -f)"
TEXT="$TEXT from $(echo $SSH_CLIENT|awk '{print $1}')"
echo $TEXT|mail -s "ssh login" you@your.domain
fi
/etc/profile выполняется при каждом входе в систему (для пользователей оболочки bash). Оператор if возвращает true только в том случае, если пользователь выполнил вход через ssh, что, в свою очередь, приведет к запуску отступающего кода.
Затем мы создадим текст сообщения:
$(date) будет заменен выходом команды date ${USER} будет заменен логином пользователя имя $(hostname -f) будет заменено полным именем хоста системы, зарегистрированной вВторая строка TEXT добавляет к первой, указывая IP-адрес системы, с которой этот пользователь входит в систему. Наконец, сгенерированный текст отправляется по электронной почте на ваш адрес.
Резюме Linux по умолчанию будет записывать каждый системный логин, будь то ssh или нет, в файлы системного журнала, но иногда - особенно для системы, к которой редко можно обращаться через ssh - быстрое и грязное уведомление может быть полезна.
В этом другом вопросе у вас, вероятно, есть то, что вы ищете. В основном вы можете добавить вызов к команде mail в скрипте, который запускается, когда пользователь входит в систему через ssh: /etc/pam.d/sshd
Этот скрипт в /etc/ssh/sshrc отправляет электронное письмо и добавляет журнал в системный регистратор. Различие сделано (так что вы можете отключить его, если хотите) между вашей личной подсети и всемирной паутиной (требуется sudo apt-get install mailutils).
SUBNET="192.168.0"
IP=`echo $SSH_CONNECTION | cut -d " " -f 1`
CURRENT_SUBNET="$(echo $IP|cut -d'.' -f1-3)"
if [ "$CURRENT_SUBNET" = "$SUBNET" ]; then
msg="This message comes from same subnet! User $USER just logged in from $IP"
echo $msg|mail -s "$msg" root
else
msg="This message comes from different subnet! User $USER just logged in from $IP"
echo $msg|mail -s "$msg" root
fi
logger -t ssh-wrapper $USER login from $IP
Я только что изменил @SirCharlo ответ
ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
logger -t ssh-wrapper $USER login from $ip
echo "User $USER just logged in from $ip" | mail -s "SSH Login" "who to <who-to@youremail.com>" &
Это работает на серверах 14.04, 16.04 и Centos 6.5.x, которые я установил, я уверен, что вам нужно обеспечить, чтобы mta настроен, но как только это будет сделано, это будет очаровывать. Следующий шаг twilio alert
Я взял некоторые из превосходных ответов из этой темы и сделал что-то более или менее копируемое и пакуемое. Он использует Mailgun для отправки электронных писем, поэтому вы избавляетесь от любых проблем с настройкой STMP. Вам просто нужен ключ API Mailgun и отправляющий домен.
После входа в систему SSH скрипт отправит данные о имени входа (имя пользователя, имя хоста, IP-адрес и все текущие переменные среды) на адрес электронной почты. Легко добавить другие параметры, которые вы хотите отправить, настроив переменную message.
#!/bin/sh
# this script is triggered on SSH login and sends an email with details of the login
# such as user, IP, hostname, and environment variables
# script should be placed somewhere on the server, eg /etc/ssh
# to trigger on SSH login, put this line in /etc/pam.d/sshd:
# session optional pam_exec.so seteuid /etc/ssh/snippet-for-sending-emails-on-SSH-login-using-PAM.sh
# Script settings
MAILGUN_API_KEY=
MAILGUN_DOMAIN=
SENDER_NAME=
SENDER_EMAIL_ADDRESS=
RECIPIENT_EMAIL_ADDRESS=
if [ "$PAM_TYPE" != "close_session" ]; then
host=$(hostname)
ip=$(dig +short myip.opendns.com @resolver1.opendns.com) # gets public IP
# Message to send, e.g. the current environment variables.
subject="SSH login - user:$USER pam-host:$PAM_RHOST host:$host ip:$ip" \
message=$(env)
curl -s --user '$MAILGUN_API_KEY' \
https://api.mailgun.net/v3/$MAILGUN_DOMAIN/messages \
-F from='$SENDER_NAME <$SENDER_EMAIL_ADDRESS>' \
-F to=$RECIPIENT_EMAIL_ADDRESS \
-F subject="$subject" \
-F text="${subject} ${message}"
fi