Сценарий не имеет какого-либо вредоносного содержимого и его можно запустить с помощью обычных учетных записей пользователей. В самом деле рекомендовано запускать скрипт из под юзера с ограниченными правами а не супер-пользователя.
Вы можете свободно использовать, изменять, распространять приведенные ниже фрагменты кода. Скрипт максимально оптимизирован, чтобы выводить только необходимые данные и обращаться только к нужным директориям — ничего лишнего.
Минимальные требования системы
Все, что вам нужно — это рабочая Linux.
Совместимость
В данном случае скрипт совестим со всеми стандартными дистрибутивами Linux. Кроме того, он не требует корневого разрешения для выполнения. Но при установке не из-под root-пользователя понадобится ввести root-пароль.
Безопасность
Для установки и использования не требуется никаких дополнительных пакетов, которые не указаны в данном посте. Нет необходимости обладать правами суперпользователя для запуска. Код был выпущен под Apache License 2.0 и это означает, что вы можете редактировать, изменять и перераспределять его.
Установка скрипта
Чтобы установить скрипт используйте
wget
команду для загрузки сценария tecmint_monitor.sh
. Также нужно будет сделать его исполняемым, установив соответствующие разрешения.$ wget http://tecmint.com/wp-content/scripts/tecmint_monitor.sh
Получим следующие:
[test@localhost ~]$ wget http://tecmint.com/wp-content/scripts/tecmint_monitor.sh
--2015-12-22 13:52:21-- http://tecmint.com/wp-content/scripts/tecmint_monitor.sh
Resolving tecmint.com... 212.71.234.61
Connecting to tecmint.com|212.71.234.61|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.tecmint.com/wp-content/scripts/tecmint_monitor.sh [following]
--2015-12-22 13:52:21-- http://www.tecmint.com/wp-content/scripts/tecmint_monitor.sh
Resolving www.tecmint.com... 212.71.234.61
Reusing existing connection to tecmint.com:80.
HTTP request sent, awaiting response... 200 OK
Length: 4015 (3.9K) [application/x-sh]
Saving to: `tecmint_monitor.sh'
100%[=============================================>] 4,015 --.-K/s in 0s
2015-12-22 13:52:21 (290 MB/s) - `tecmint_monitor.sh' saved [4015/4015]
[test@localhost ~]$
Скачали файл без проблем, теперь нужно установить соответствующие разрешение.
Устанавливаем разрешения.
# chmod 755 tecmint_monitor.sh
Настоятельно рекомендуется установить скрипт из-под пользователя с ограниченными правами, а не как суперпользователь. В таком случае будет запрос пароля и необходимо будет установить компоненты в определенных местах.
Для установки скрипта
tecmint_monitor.sh
, используем -i, как показано ниже.$ ./tecmint_monitor.sh -i
Получим такой вот запрос пароля:
[test@localhost ~]$ ./tecmint_monitor.sh -i
./tecmint_monitor.sh: line 30: /tmp/scriptname: Permission denied
Password:
Введите root-пароль. Если все пройдет хорошо вы получите сообщение про успешную установку.
Congratulations! Script Installed, now run monitor Command
[test@localhost ~]$
Более безопасный вариант будет добавление пользователя в sudoers. В таком случаи команда установки будет выглядеть следующим образом.
$ $ sudo ./tecmint_monitor.sh -i
После установки, вы можете запустить сценарий с помощью вызова команды
monitor
из-под любого пользователя. $ monitor
Как только команда будет выполнена вы получаете различную информацию о системе:
- Подключение к Интернету
- Тип ОС
- Имя ОС
- Версия ОС
- Архитектура
- Версия ядра
- Имя хоста
- Внутренний IP
- Внешний IP
- Имя Сервера
- Авторизированные пользователи
- Использовано RAM
- Использовано SWAP
- Сколько дискового пространства использовано
- Время работы системы
Проверить установленную версию скрипта можно используя
monitor -v
.$ monitor -v
Получите такого рода результат:
tecmint_monitor version 0.1
Designed by Tecmint.com
Released Under Apache 2.0 License
[test@localhost ~]$
Вывод
Это готовое решение из коробки, которое не требует специальных навыков или знаний по работе с SSH. Такое решение явно не лучшее для матерых админов, но оно прекрасно подойдет для новичков, только начинающих осваивать работу с сервером. Если вы знаете более оптимальные скрипты для быстрой оценки состояния Linux систем, которые не требуют сверх-знаний и будут полезней, высказывайте свое мнение и оставляйте рекомендации в комментариях. Я, как и другие читатели, будем рады видеть мнение профессиональных администраторов, работающих с системами Linux. Каждый сможет подчеркнуть что-то для себя.
UPD
При установке лучше использовать sudo, с точки зрения безопасности.
$ gpasswd -a username wheel
Adding user test to group wheel
?
отредактировать файл sudoers
$ visudo
$$ Allows people in group wheel to run all commands
$ %wheel ALL=(ALL) ALL
раскоментировать строку, или согласно синтаксису добавить нашего пользователя
$ username ALL=(ALL) ALL
Теперь из под пользователя можно использовать sudo.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (42)
BuriK666
22.12.2015 18:21+7# Remove Temporary Files rm /tmp/osrelease /tmp/who /tmp/ramcache /tmp/diskusage
используйте mktemp
JIghtuse
22.12.2015 18:40+5- Вашему терминалу очень плохо.
- Может, на Github?
Настоятельно рекомендуется установить скрипт из-под пользователя с ограниченными правами
Зачем тогда вообще su в скрипте? Зачем нужен «установщик» внутри скрипта? «Установить» и «скачать и положить в/usr/bin
» — разные вещи. Незачем эту директорию трогать. Положите в$HOME/.local/bin/
и дело с концом.
может быть полезен для тех новичков, желающих получить часть необходимой информации об их системе, сети, пользователях, нагрузке, RAM, владельцах, внутреннем и внешнем IP и т.п.
Полезно, наверное. Если нет cockpit.
ComodoHacker
22.12.2015 18:41+6Что у вас со шрифтами в консоли?
M_Muzafarov
23.12.2015 09:48Подтверждаю — не используйте такие шрифты, а то даже лучшие скрипты мониторинга вашим глазам не помогут
oldbay
22.12.2015 18:43Используем для мониторинга либо snmp, а если хочется «странного и необычного», то прикручиваем свои скрипты к nrpe… последнее тоже костыль, но не такой откровенный.
Anastasia_K
22.12.2015 19:00+4Как Вы считаете, для чего нужна последовательность, начинающаяся с #!, и где в файле она должна быть расположена?
и в догонку. что будет, если некий злоумышленник создаст в /tmp/scriptname симлинк например на /bin/bash?
farcaller
22.12.2015 20:16+3$ cat /etc/resolv.conf | sed '1 d' | awk '{print $2}' nameserver nameserver nameserver nameserver nameserver nameserver
я даже вот задумался над этой конструкций из sed/awk, пытаясь понять как она в принципе должна была работать.
icCE
22.12.2015 22:35А просветите меня кто-нибудь, зачем после then скобки в bash?
ну типа
if [] then { echo } fi
Да и такое как по мне читать мягко говоря не приятно, почему не сделать отступы например как принято (ну вроде бы везде так пишут)
if []; then echo fi
icCE
22.12.2015 22:45+2А сам себе отвечу.
то, что находится между фигурными скобками – выполняется в контексте текущей оболочки.
Можно использовать еще и круглые, тогда будет выполнятся в отдельном подпроцессе.
Вроде так.RPG
22.12.2015 22:49С фигурными можно такие финты проделывать:
[[ $a == $b ]] && { echo "error" >&2; exit -1; }
Тогда if не нужен. Ну и пользователи не-bash, скорее всего, будут ругаться.
Или даже такие:
{( sleep 15 )& disown;} 2>/dev/null THREAD=$!
icCE
23.12.2015 07:55Ну второе это вполне нормально, да и первое то же вполне себе читается — видимо тут уже дело привычки и глубина знаний bash.
k3NGuru
23.12.2015 06:32+1Есть еще такая штука на питоне pypi.python.org/pypi/Glances
Можно даже как веб-сервис запустить :)
nikolayvaganov
23.12.2015 19:54+1скрипт можно заменить однострочником =)
intrud3r
23.12.2015 21:58-1клавиши нажимать, не мешки таскать
где однострочник?nikolayvaganov
23.12.2015 22:19+2Вы серьезно или троллите? =) Используется echo, и парсер awk print команд hostname, ifconfig, cat, w, free, df, uptime. Подобные скрипты-велосипеды, имхо, пишет каждый администратор в самом начале своего знакомства с nix.
PS Кстати, не согласен с автором по поводу " но он может быть полезен для тех новичков", потому как новичку нужно набивать руку на использовании простых команд и подобное делать впоследствии уже «на автомате»
saboteur_kiev
29.12.2015 12:22+1>«Нет необходимости обладать правами суперпользователя для запуска.»
>«Но при установке не из-под 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?
Temmokan
Доктор, может sudo?
Не надо приучать людей вводить root-пароль.
nikolayvaganov
PermitRootLogin without-password
Temmokan
Дисциплину не использовать root это не отменяет, и само по себе безопасности от случайных ошибок не гарантирует.
Думаю, не у меня одного в практике был случай, когда клиент с подобной установкой и без «обычных» пользователей, среди которых есть sudoer'ы, сделал впоследствии два действия: a) случайно переписал файл ~root/.ssh/authorized_keys и b) перезагрузил компьютер. «История прекратила течение своё». По счастью, был физический доступ к консоли, не было пароля на grub и файловая система не была зашифрована.
Но другим подобного урока на боевом сервере повторять очень не советую. «Что это значит, что вы не знаете, что такое резервное копирование?»