en
Feedback
BashMaster

BashMaster

Open in Telegram

Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Реклама: @Kone4noVasya Канал на бирже: https://telega.in/c/bash_help

Show more
8 882
Subscribers
-124 hours
-167 days
+430 days
Posts Archive
📢 Онлайн-вебинар «Microsoft, ты куда? Или как организовать корпоративную почту в 2023 году» от ITGLOBAL.COM Что случилось? 3
📢 Онлайн-вебинар «Microsoft, ты куда? Или как организовать корпоративную почту в 2023 году» от ITGLOBAL.COM Что случилось? 30 сентября Microsoft покинул российский рынок. Продление лицензий приостановлено, нормальное функционирование их продуктов станет невозможным Чего ожидать? Дыры в безопасности, отсутствие обновлений и поддержки при использовании пиратских версий продуктов. Сложность интеграции, длительный переход на другое решение Как этого избежать? Регистрируйтесь на вебинар, где мы расскажем, как организовать корпоративную почту в реалиях 2023 года! Дата: 12 октября 12:00 МСК Регистрация на вебинар Реклама. ООО "ИТГЛОБАЛКОМ РУС". ИНН 7838413489. erid: LjN8KTqM5

Скрипт Bash для мониторинга журнала Messages (Warning, Error и Critical) в Linux В настоящее время на рынке доступно множество инструментов для мониторинга с открытым исходным кодом для мониторинга производительности систем Linux. Они отправляют уведомление по электронной почте, когда система достигает указанного порогового значения. Они контролируют всё, например, использование ЦП, использование памяти, использование подкачки, использование дискового пространства и многое другое. Если у вас всего несколько систем и вы хотите их контролировать, то написание небольшого скрипта оболочки может облегчить вашу задачу. В этом уроке мы добавили скрипт оболочки для отслеживания сообщений в системе Linux. Этот скрипт проверит «warning, error и critical» в файле /var/log/messages и запустит письмо с указанным идентификатором электронной почты, если будет найдено что-либо связанное с ним. Если какие-либо данные строки найдены в файле «/var/log/messages» для вчерашней даты, скрипт отправит оповещение по электронной почте на указанный идентификатор электронной почты. Примечание. Вам необходимо изменить идентификатор электронной почты на свой. Кроме того, вы можете изменить пороговое значение использования памяти в соответствии с вашими требованиями.
# vi /opt/scripts/os-log-alert.sh

#!/bin/bash

#Set the variable which equal to zero

prev_count=0

count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | egrep -wi 'warning|error|critical' | wc -l)

if [ "$prev_count" -lt "$count" ] ; then

# Send a mail to given email id when errors found in log

SUBJECT="WARNING: Errors found in log on "`date --date='yesterday' '+%b %e'`""

# This is a temp file, which is created to store the email message.

MESSAGE="/tmp/logs.txt"

TO="2daygeek@gmail.com"

echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE

echo  "Hostname: `hostname`" >> $MESSAGE

echo -e "\n" >> $MESSAGE

echo "+------------------------------------------------------------------------------------+" >> $MESSAGE

echo "Error messages in the log file as below" >> $MESSAGE

echo "+------------------------------------------------------------------------------------+" >> $MESSAGE

grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >>  $MESSAGE

mail -s "$SUBJECT" "$TO" < $MESSAGE

#rm $MESSAGE

fi

Установите разрешение на запуск у файла os-log-alert.sh. $ chmod +x /opt/scripts/os-log-alert.sh Наконец добавьте cronjob, чтобы автоматизировать этот скрипт. Он будет работать каждый день в 7 часов. # crontab -e 0 7 * * * /bin/bash /opt/scripts/os-log-alert.sh Примечание. Вы будете получать уведомления по электронной почте каждый день в 7 часов, что относится к вчерашним логам. 🔨 bash_help

Включаем и настраиваем файерволл Скрипт, который настраивает и включает файерволл: #!/bin/bash # Install the necessary packag
Включаем и настраиваем файерволл Скрипт, который настраивает и включает файерволл: #!/bin/bash # Install the necessary packages apt update apt install -y ufw # Allow SSH connections ufw allow ssh # Enable the firewall ufw enable 🔨 bash_help

Скрипт по поиску строк одного файла в другом файле ./str_existance.sh to_find.txt where_find.txt - Файл из которого берем стр
Скрипт по поиску строк одного файла в другом файле ./str_existance.sh to_find.txt where_find.txt - Файл из которого берем строки для поиска указываем в первой переменной. - Файл в котором делаем поиск указываем во второй переменной. (Можно убрать якоря, чтобы успешный результат считался не только по полному match строки.) #!/bin/bash cat $1 | while read sw do RESULT=$(grep ^"$sw"$ $2) if [[ "$RESULT" == "" ]]; then echo $sw";"not_exist else echo $sw";"exist fi done 🔨 bash_help

Устанавливаем обновления безопасности Скрипт, который проверяет и устанавливает доступные обновления безопасности: #!/bin/bas
Устанавливаем обновления безопасности Скрипт, который проверяет и устанавливает доступные обновления безопасности: #!/bin/bash # Update the package repository apt update # Install available security updates apt upgrade -y --security 🔨 bash_help

Подготовка эффективной среды для написания bash сценариев Если вам приходится писать bash скрипты или вы только планируете эт
Подготовка эффективной среды для написания bash сценариев Если вам приходится писать bash скрипты или вы только планируете этим заняться, данная статья написана для вас. Bash, он же возрождённый shell, является по-прежнему одним из самых популярных командных процессоров и интерпретаторов сценариев. Как бы его ненавидели и не пытались заменить, всё равно он присутствует вокруг нас и никуда не собирается исчезать. Начнем с выбора среды разработки, именно она позволяет объединять различные аспекты написания программы, повышая продуктивность за счет объединения общих действий по написанию программного обеспечения в одном приложении. Консольные текстовые редакторы. Vim, Emacs и Nano - классическая троица, сейчас уже редко кто использует на рабочих станциях как основной инструмент, но vi и nano незаменимы для быстрого редактирования файлов в удаленных ssh сессиях. Если вы еще не работали с ним, рекомендую освоить такие вещи как поиск, замена и форматирование, хотя бы в nano. Графические текстовые редакторы. Mousepad, Gedit, Notepad++ и т.п. Легковесные редакторы, с подсветкой синтаксиса, автозаменой и прочим, что уже есть в консольных редакторах, но они всё еще не являются полноценной интегрированной средой разработки. IDE. Geany, Atom, IntelliJ IDEA, Sublime Text и Visual Studio Code - это уже полноценные и расширяемые среды разработки. Долгие годы я пользовался Geany и пробовал все перечисленные варианты, но только с появлением VSCode мне удалось сменить основную IDE для большинства задач. Далее в статье про утилиты и расширения, настройку окружения и многое другое. 🖼️ Дочитать статью 🔨 bash_help

Горячие клавиши Bash Работа с Bash была бы не такой удобной без горячих клавиш, которые позволяют упростить множество действи
Горячие клавиши Bash Работа с Bash была бы не такой удобной без горячих клавиш, которые позволяют упростить множество действий. Рассмотрим основные сочетания, некоторые из них вы и так используете каждый день: Tab - автодополнение, наберите начало команды или пути и нажмите Tab, если такая команда только одна оболочка ее дополнит. Если доступно несколько вариантов, нажмите два раза Tab чтобы их увидеть; Стрелка вверх - предыдущая команда в истории; Стрелка вниз - следующая команда в истории; Ctrl+R - поиск по истории. Просто нажмите эту кнопку и начните вводить нужную команду; Ctrl+G - выйти из режима поиска; Alt+. - предыдущее слово последней команды; Ctrl+L - очистить вывод терминала; Ctrl+A - перейти в начало строки; Ctrl+E - в конец строки; Ctrl+K - удалить символы начиная от курсора и к концу команды; Ctrl+U - удалить символы от курсора до начала команды; Ctrl+W - удалить все символы этого слова слева; Ctrl+Y - удалить все символы этого слова справа; Ctrl+S - остановить вывод на экран; Ctrl+Q - возобновить вывод на экран. Это все основные сочетания клавиш, которые вам понадобятся чтобы пользоваться bash. Конечно, существуют и другие, но эти основные. 🔨 bash_help

Что такое Bashfuscator? Bashfuscator – это модульный и расширяемый фреймворк для обфускации Bash, написанный на языке Python
Что такое Bashfuscator? Bashfuscator – это модульный и расширяемый фреймворк для обфускации Bash, написанный на языке Python 3. Он предоставляет множество различных способов сделать однострочные фразы или скрипты Bash гораздо более сложными для понимания. Это достигается за счет генерации запутанного, рандомизированного кода Bash, который во время выполнения оценивается по исходному вводу и выполняется. Bashfuscator позволяет легко генерировать сильно обфусцированные команды и скрипты Bash как из командной строки, так и в виде библиотеки Python. Для работы Bashfuscator требуется Python 3.6+. 🖼️ Как установить 🔨 bash_help

Использование двойных кавычек для ссылки на переменные Кавычки, ограничивающие строки, нужны для предотвращения интерпретации
Использование двойных кавычек для ссылки на переменные Кавычки, ограничивающие строки, нужны для предотвращения интерпретации специальных символов, которые могут находиться в строке или в названиях переменных (за исключением некоторых специальных знаков). Использование двойных кавычек при обращении к переменным предотвращает разбиение строк при наличии в них пробелов на слова, а также — другие возможные сбои. Проделайте пример ниже:
#!/bin/bash
#let script exit if a command fails
set -o errexit

#let script exit if an unsed variable is used
set -o nounset

words="I love bash"

echo "Words without double quotes"
for word in $words; do
echo "$word"
done
echo

echo "Words with double quotes" for word in "$words"; do echo "$word" done exit 0 Сохраните и закройте файл, затем — запустите его при помощи следующей команды: $ ./<your-file-name>.sh 🔨 bash_help

Автоматизация начальной настройки веб-сервера Наверняка, у многих есть собственные веб серверы. Настройка нового сервера с ну
Автоматизация начальной настройки веб-сервера Наверняка, у многих есть собственные веб серверы. Настройка нового сервера с нуля — достаточно нудное и времяубивающее трудоемкое занятие не только для новичка, но и для бывалых. А если к тому же по долгу службы вам приходится настраивать по несколько серверов в неделю/месяц, то невольно начинаешь задумываться об автоматизации этого процесса. Хочу поделиться bash скриптом, который я использую для начальной настройки RedHat / CentOS серверов. Скрипт рассчитан на настройку RedHat Enterprise Linux (CentOS) версий 5 и 6, но может быть легко адаптирован для других систем. Итак, ввиду большого количества комментариев в коде, приведу только краткое описание. **Подключение репозиториев epel, ius, nginx. Обновление пакетов **Устанавка минимального набора утилит, необходимых для нормальной работы системы, а также зависимостей для новых программ **Настройка SSHD **Установка NTPD, выбор временной зоны, синхронизация даты **Монтирование /tmp и /dev/shm c атрибутами noexec и nosuid **Установка и настройка Virtualmin, CSF Firewall, MySQL 5.5, PHP 5.4, Nginx, Postfix, SaslAuth, phpMyAdmin **Установка и обновление CPANminus как замены CPAN **Отключение ненужных сервисов из автозагрузки Большинство операций скрипт выполнит самостоятельно, но некоторые действия со стороны пользователя все же необходимы. Например, ввод данных для создания SSL сертификата и подтверждение установки Virtualmin. 🖼️ Ссылка на скрипт 🔨 bash_help

✅ ITKB_channel - бесплатное обучение по Windows, Linux, DevOps, Security, Network, кодинг ✅ ITKB_Archive - библиотека (книги,
ITKB_channel - бесплатное обучение по Windows, Linux, DevOps, Security, Network, кодинг ✅ ITKB_Archive - библиотека (книги, курсы, ИТ литература)

Создаём логи мониторинга Это модифицированная версия предыдущего примера. Если в системе не настроена почта, скрипт создаст ф
Создаём логи мониторинга Это модифицированная версия предыдущего примера. Если в системе не настроена почта, скрипт создаст файл логов. Ядро скрипта заключено в бесконечный цикл while, который настроен на выполнение проверки ping каждый час (3600 секунд). Измените скрипт в соответствии с вашими потребностями. Удалите бесконечный цикл while, если вы собираетесь использовать этот скрипт с планировщиком cron. #!/bin/bash LOG=/tmp/mylog.log SECONDS=3600 EMAIL=admin@itsecforu.ru for i in $@; do echo "$i-UP!" > $LOG.$i done while true; do for i in $@; do ping -c 1 $i > /dev/null if [ $? -ne 0 ]; then STATUS=$(cat $LOG.$i) if [ $STATUS != "$i-DOWN!" ]; then echo "`date`: ping неудачен, $i хост лежит!" | mail -s "$i хост лежит!" $EMAIL fi echo "$i-DOWN!" > $LOG.$i else STATUS=$(cat $LOG.$i) if [ $STATUS != "$i-UP!" ]; then echo "`date`: пинг прошел, $i Хост подня!" | mail -s "$i Хост поднят !" $EMAIL fi echo "$i-UP!" > $LOG.$i fi done sleep $SECONDS done Выполнение: ./check-server-status.sh google.com yahoo.com 192.168.1.2 mylinuxbox N2100 🔨 bash_help

Часто слышу такие фразы от Айтишников:   - Раньше работа была интересной, а сейчас встаю и ненавижу весь день наперед. - Чувствую свою ненужность в проекте. - Конфликтую с коллегами, бесят люди вокруг. - Постоянно отвелкаюсь на любые мелочи, в итоге работаю медленнее. Сталкивался с таким? Когда начинаешь выгорать, твоё бессознательное старается сократить контакты с источником стресса = работой. В этот момент ты стараешься "просто собраться", "замотивироваться", чтобы работать еще больше. То есть мысленно пинаешь себя, лежащего без сил. И это только усиливает чувство груза и нежелание работать. И так повторяется раз за разом. И тогда может показаться, что если уволиться, все станет отлично. Увы. Однажды тревога, долг и вина уже загнали тебя в стратегию выгорания. И они от увольнения никуда не денутся. Да, ты сменишь работу, но останешься с теми же поведенческими стратегиями. Выгорание появляется не из-за места, а из-за того, что ты попадаешь в повторяющиеся ситуации, в которых принимаешь решение не в свою пользу: - Тебе написали в 10 вечера по работе, а ты ответил. - На тебя повесили чужую работу, ты взял. И т.д. Годам к 50 такая стратегия может перейти в психосоматические проблемы: мигрень, синдром раздраженного кишечника, расстройства сна, давление. Что делать? Не тянуть и начать грамотно с этим работать. Я открываю доступ к мини-курсу из 3-х практических занятий для айтишников, которые хотят вернуть радость от работы и жизни!   Самостоятельно можно гнить несколько лет, убеждая себя, что "прогресс есть". С психологом реально выйти из апатии буквально за пару месяцев. Думаешь, что "само пройдет"? Не пройдет! После мини-курса ты найдешь причины упадка сил, апатии и выгорания. И поймешь, как из этого выйти. Что внутри: - 7 признаков того, что твоё окружение высасывает из тебя силы. - Этапы выгорания. Как понять, как глубоко ты провалился. - Что будет, если ничего не менять? Спойлер: Будет плохо. - Как прийти из "постоянно задолбанный и уставший" к жизненному балансу. Особенно полезно будет тем, кто искренне считает, что ему ничего не поможет, а он просто «вынужден перерабатывать».   Подписывайся на мой ТГ-канал и смотри мини-курс в закрепе: https://t.me/+UyTW-ucszJ5jMTdi

Уведомление по почте, когда сервер не работает Скрипт отправит электронное письмо на указанный адрес электронной почты, когда
Уведомление по почте, когда сервер не работает Скрипт отправит электронное письмо на указанный адрес электронной почты, когда ping не может достичь места назначения. Системный администратор может регулярно выполнять этот скрипт с использованием планировщика cron. Сначала скрипт использует команду ping для проверки связи с хостом или IP-адресом, указанным в качестве аргумента. В случае, если это место назначения недоступно, будет использована команда mail для уведомления системного администратора об этом событии.
#!/bin/bash

for i in $@
do
ping -c 1 $i &> /dev/null

if [ $? -ne 0 ]; then
  echo "`date`: ping не прошел, $i хост лежит !" | mail -s "$i хост лежит!" admin@itsecforu.ru
fi
done

Выполнение: ./check_hosts.sh google.com yahoo.com 192.168.1.2 mylinuxbox N2100 🔨 bash_help

Сканирование подсети В этом примере bash скрипт просканирует сеть на предмет хостов, подключенных по IP-адресам 10.1.1.1 – 25
Сканирование подсети В этом примере bash скрипт просканирует сеть на предмет хостов, подключенных по IP-адресам 10.1.1.1 – 255. Скрипт выведет сообщение Хост с с IP: IP-адрес поднят, если команда ping была успешной. Не стесняйтесь изменять скрипт для сканирования диапазона ваших хостов.
#!/bin/bash

is_alive_ping()
{
  ping -c 1 $1 > /dev/null
  [ $? -eq 0 ] && echo Хост с IP: $i поднят.
}

for i in 10.1.1.{1..255} 
do
is_alive_ping $i & disown
done

Выполнение:
./bash_ping_scan.sh

Вывод: Хост with IP: 10.1.1.1 поднят. Хост with IP: 10.1.1.4 поднят. Хост with IP: 10.1.1.9 поднят. 🔨 bash_help

🗄2 канала для каждого линукс инженера и безопасника Network Academy - большое количество уроков и статей по устройству компьютерных сетей. Кладезь информации для безопасника CyberSec Academy - уроки по кибербезопасности и хакингу от нуля до профи, подписывайся и учись

Как проверить контрольную сумму SHA с помощью bash скрипта Во многих случаях контрольная сумма SHA предоставляется как есть,
Как проверить контрольную сумму SHA с помощью bash скрипта Во многих случаях контрольная сумма SHA предоставляется как есть, файл контрольной суммы содержит только контрольную сумму. Это создает проблему для стандартных служб, поскольку они ожидают имя файла, связанное с заданной контрольной суммой, используя формат GNU или BSD. Решение заключается в создании простого скрипта оболочки, который будет выполнять дополнительные шаги для проверки контрольной суммы SHA.
#!/bin/bash
# verify file checksum from a file

# checksum algorithms
algorithms=( 1 224 256 384 512 512224 512256 )

# file to check
file="$1"

# execute when there is one parameter
if [ "$#" -eq "1" ]; then
  # check if file exist
  if [ -f "${file}" ]; then
    # find checksum file
    for algorithm in "${algorithms[@]}"; do
      if [ -f "${file}.sha${algorithm}" ]; then
        echo "Found SHA${algorithm} checksum"
        words="$(wc -w < ${file}.sha${algorithm})"
        # verify checksum and pass the exit code
        if [ "$words" == "1" ]; then
          shasum --algorithm $algorithm --check <(echo $(cat ${file}.sha${algorithm})\ \ $file)
          exit $?
        elif [ "$words" == "2" ] || [ "$words" == "4" ]; then
          shasum --algorithm $algorithm --check ${file}.sha${algorithm}
          exit $?
        fi
      fi
    done
  fi
fi

Он автоматически проверит контрольную сумму SHA (в стиле GNU или BSD). Вы будете проинформированы в случае возникновения проблем. 🔨 bash_help

2 самых популярных канала по информационной безопасности и этичному хакингу: 📚 @it_secur — Редкая литература, курсы и уникальные мануалы для ИБ специалистов любого уровня и направления. Читайте, развивайтесь, практикуйте. 👨🏻‍💻 @infosecurity — Авторский Telegram канал, посвященный информационной безопасности, OSINT и социальной инженерии.

Настройка приглашения командной строки в Bash Приглашение ко вводу команд в bash — это строка, которая отображается слева от
Настройка приглашения командной строки в Bash Приглашение ко вводу команд в bash — это строка, которая отображается слева от каждой команды, которую вы вводите в терминале. Обычно приглашение имеет вид
пользователь@hostname:директория$

Приглашение можно настраивать. Можно добавлять информацию или, например, изменить цвет приглашения. Формат строки приглашения задается в переменной окружения PS1. Чтобы настроить приглашение, необходимо изменить значение переменной PS1. Например, переменная PS1 может иметь значение: PS1="\u@\h:\w$" Можно установить переменную PS1 только для текущей сессии в терминале. Это удобно, пока вы подбираете, как будет выглядеть строка приглашения. Чтобы это сделать нужно выполнить команду export для переменной PS1, например:
export PS1="\u@\w:"

После выполнения команды строка приглашения в терминале сразу изменится. Для задания различных значений переменной PS1 существуют специальные символы. Комбинируя различные специальные символы можно составить свою строку приглашения. 📖 Дочитать статью 🔨 bash_help

Простой авто-кликер в Linux c помощью небольшого BASH скрипта Авто-кликер может понадобиться в разных случаях: если нужно авт
Простой авто-кликер в Linux c помощью небольшого BASH скрипта Авто-кликер может понадобиться в разных случаях: если нужно автоматизировать нажатие какой-нибудь кнопки, или фармить печеньки в Cookie Clicker. Что-бы без лишней траты времени это сделать, нам понадобится программа xdotool.
sudo apt-get install xdotool

Создаём текстовый файл с любым названием, в домашней директории(так будет удобнее в будущем запускать сам авто-кликер). Затем открываем его и вставляем туда такой текст: #!/bin/bash sleep 5 for i in {1..2048} do sleep 1.5 xdotool click 1 echo "Cовершено $i нажатий." done Где "2048" в третьей строке - это количество желаемых нажатий, а "1.5" в 5 строке - это интервал в секундах между нажатиями. sleep 5 (2 строка) - это отсчёт в секундах до начала цикла. Ну и ещё прикручено echo для статистики. Кликать будет левая кнопка мыши. Чтобы эмулировать нажатия правой кнопки мыши, нужно в строке "xdotool click 1" заменить единицу на 3. - Сохраняем файл. - Затем нужно сделать наш файл исполняемым. Для этого нужно вписать в терминал команду: chmod u+x название-файла Авто-кликер готов! Чтобы его запустить, нужно ввести в терминале команду: ./название-файла Чтобы остановить авто-кликер раньше, чем вписано в файле, нужно просто открыть окно терминала, через которое работает авто-кликер, и нажать сочетание клавиш Сtrl+C. 🔨 bash_help