Pull to refresh

Comments 47

Доктор, может sudo?
Не надо приучать людей вводить root-пароль.
Дисциплину не использовать root это не отменяет, и само по себе безопасности от случайных ошибок не гарантирует.

Думаю, не у меня одного в практике был случай, когда клиент с подобной установкой и без «обычных» пользователей, среди которых есть sudoer'ы, сделал впоследствии два действия: a) случайно переписал файл ~root/.ssh/authorized_keys и b) перезагрузил компьютер. «История прекратила течение своё». По счастью, был физический доступ к консоли, не было пароля на grub и файловая система не была зашифрована.

Но другим подобного урока на боевом сервере повторять очень не советую. «Что это значит, что вы не знаете, что такое резервное копирование?»
# Remove Temporary Files
rm /tmp/osrelease /tmp/who /tmp/ramcache /tmp/diskusage

используйте mktemp
В опроснике не хватает варианта «нет, использую полноценный мониторинг».
Ага, удивило :)
Хватает на vds htop'a
  • Вашему терминалу очень плохо.
  • Может, на Github?
  • Настоятельно рекомендуется установить скрипт из-под пользователя с ограниченными правами
    Зачем тогда вообще su в скрипте? Зачем нужен «установщик» внутри скрипта? «Установить» и «скачать и положить в /usr/bin» — разные вещи. Незачем эту директорию трогать. Положите в $HOME/.local/bin/ и дело с концом.
  • может быть полезен для тех новичков, желающих получить часть необходимой информации об их системе, сети, пользователях, нагрузке, RAM, владельцах, внутреннем и внешнем IP и т.п.
    Полезно, наверное. Если нет cockpit.

Подтверждаю — не используйте такие шрифты, а то даже лучшие скрипты мониторинга вашим глазам не помогут
Используем для мониторинга либо snmp, а если хочется «странного и необычного», то прикручиваем свои скрипты к nrpe… последнее тоже костыль, но не такой откровенный.
прочитал «окровавленный» ))
Да, да окровавленный костыль и смертоносный велосипед :)
Как Вы считаете, для чего нужна последовательность, начинающаяся с #!, и где в файле она должна быть расположена?
и в догонку. что будет, если некий злоумышленник создаст в /tmp/scriptname симлинк например на /bin/bash?
О, вы умеете определять сколько памяти занято на сервере? Расскажите, как вы это делаете? Я даже к kdb сидел, всё равно не могу на этот вопрос ответить.
$ cat /etc/resolv.conf | sed '1 d' | awk '{print $2}'
nameserver
nameserver
nameserver
nameserver
nameserver
nameserver


я даже вот задумался над этой конструкций из sed/awk, пытаясь понять как она в принципе должна была работать.
Меня всегда это радовало. Обычно рекомендую изучить awk а не гуглить список решений из таких вот конструкций.
$ cat /etc/resolv.conf | sed '1 d' | awk '{print $2}'
DO
192.168.1.1

Всё нормально:)

top -n 1 -b | grep «load average:» | awk '{print $10 $11 $12}'
loadaverage:0,27,

Всё идёт по плану…
Что может пойти не так? :)
Что за трындец творится со шрифтами в консоли на скриншоте?
#!/bin/bash

как минимум заменит на

#!/usr/bin/env bash
Ну если хочется универсальности то да, но текущий скрипт конечно далек от совершенства.
На тему безопастности — спорный довод.
Если бы были серьезные проблемы, я думаю давно бы об этом было известно.
А просветите меня кто-нибудь, зачем после then скобки в bash?

ну типа

if []
then
{
echo
}
fi


Да и такое как по мне читать мягко говоря не приятно, почему не сделать отступы например как принято (ну вроде бы везде так пишут)

if []; then
    echo
fi
А сам себе отвечу.

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

Вроде так.
С фигурными можно такие финты проделывать:

[[ $a == $b ]] && { echo "error" >&2; exit -1; }

Тогда if не нужен. Ну и пользователи не-bash, скорее всего, будут ругаться.

Или даже такие:

{(
	sleep 15
)& disown;} 2>/dev/null
THREAD=$!
Ну второе это вполне нормально, да и первое то же вполне себе читается — видимо тут уже дело привычки и глубина знаний bash.
Раз уже начали вечер советов, тогда добавлю
chmod +x tecmint_monitor.sh
UFO just landed and posted this here
главное, не говорить каким ,)
клавиши нажимать, не мешки таскать
где однострочник?
Вы серьезно или троллите? =) Используется echo, и парсер awk print команд hostname, ifconfig, cat, w, free, df, uptime. Подобные скрипты-велосипеды, имхо, пишет каждый администратор в самом начале своего знакомства с nix.

PS Кстати, не согласен с автором по поводу " но он может быть полезен для тех новичков", потому как новичку нужно набивать руку на использовании простых команд и подобное делать впоследствии уже «на автомате»
>«Нет необходимости обладать правами суперпользователя для запуска.»
>«Но при установке не из-под root-пользователя понадобится ввести root-пароль.»

Взаимоисключающие параграфы?

>«Это готовое решение из коробки, которое не требует специальных навыков или знаний по работе с SSH»
Еще во времена FIDO, всех учили что не стоит запускать от рута чужие велосипеды. А то шутки «а что делает команда rm -rf /» все еще живы.
И главная задача мониторинга — автоматизация, то есть висеть в кроне и рассылать уведомления, а что у вас в «коробке»? совсем не готовое решение. Его еще надо готовить.

В своем большинстве, для мониторинга достаточно знать свободное место на диске, свободную память и нагрузку на CPU, у вас вместо нагрузки на CPU выдает статику типа архитектуры, версии ОС и кучи других ненужных для этого дела параметров.

>"#! /bin/bash"
Я чего-то не знаю про скрипты, или у вас действительно
1) после шебанга пробел идет?
2) вся строка не первая в скрипте?

> externalip=$(curl -s ipecho.net/plain;echo)
то есть, если инет пропал, я даже не смогу вашим скриптом определить свой внешний IP и сказать его службе техподдержки, придется по-старинке ipconfig?

> df -h| grep 'Filesystem\|/dev/sda*' > /tmp/diskusage
А вы в курсе, что диски могут быть не только sda?
А в чем проблема в пробеле после шебанга?
Хм, похоже никакой, даже наоборот. Просто на практике ни разу не встречал примера с пробелом, но спасибо поискал, нашел надежный источник:
http://www.in-ulm.de/~mascheck/various/shebang/
Интересно, что делаю не так:

sudo ./tecmint_monitor.sh -i

./tecmint_monitor.sh: 26: ./tecmint_monitor.sh: [[: not found
./tecmint_monitor.sh: 36: ./tecmint_monitor.sh: [[: not found
./tecmint_monitor.sh: 43: ./tecmint_monitor.sh: [[: not found
Может быть такое то из-под zsh запускаете? У меня похожая проблема была.
Не, станартный bash ubuntu 15.10
Во-первых, авторы скрипта не в курсе, где должен стоять shebang. Отсутствие его в начале файла заставляет запускаться скрипт из-под стандартной оболочки. Во-вторых, стандартная оболочка Debian/Ubuntu уже несколько лет как dash:

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Nov  8  2014 /bin/sh -> dash


Ну и наконец, в скрипте используются башизмы, не поддерживаемые dash.
Sign up to leave a comment.