July 21

5 скриптов автоматизации, которые должен знать каждый пользователь Linux

Это перевод оригинальной статьи 5 Automation Scripts Every Linux User Should Know.

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

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

Это скрипты, которые вы действительно можете использовать, а не просто примеры для чтения и забывания. Так что давайте начнём.

Умный организатор папок

Умный скрипт для организации папок наводит порядок в захламленных папках. Если вы когда-либо открывали папку «Загрузки» и видели там десятки PDF-файлов, изображений, установщиков и случайных файлов, перемешанных между собой, этот скрипт автоматически решит эту проблему.

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

Итак, создайте новый файл с именем smart_organizer.sh с помощью текстового редактора nano в терминале.

nano smart_organizer.sh

Затем добавьте следующий код:

#!/bin/bash

DIR="$HOME/Downloads"

move() {
    mkdir -p "$2"
    mv "$1" "$2/"
}

for file in "$DIR"/*; do
    [ -f "$file" ] || continue

    case "${file##*.}" in
        jpg|png|gif)
            move "$file" "$DIR/Images"
            ;;
        pdf|docx|txt)
            move "$file" "$DIR/Documents"
            ;;
        zip|tar|gz)
            move "$file" "$DIR/Archives"
            ;;
        deb|rpm)
            move "$file" "$DIR/Installers"
            ;;
    esac
done

При запуске скрипт проверяет каждый файл в папке «Загрузки». Если элемент не является обычным файлом (например, если это уже папка), скрипт пропускает его. Это предотвращает случайное перемещение важных файлов.

Для каждого файла скрипт анализирует его расширение, например, .jpg, .pdf или .zip. На основе этого расширения он определяет, к какому каталогу относится файл.

Изображения помещаются в папку «Изображения», документы — в папку «Документы», сжатые файлы — в папку «Архивы», а установщики программного обеспечения — в папку «Установщики».

Если одна из этих папок еще не существует, скрипт автоматически создаст ее перед перемещением файла. Ничего не удаляется; файлы просто перемещаются в более упорядоченные папки.

Запустите скрипт

Перед запуском скрипта убедитесь, что вы находитесь в папке «Загрузки». Для этого откройте терминал и перейдите в папку «Загрузки»:

cd /Downloads

Перед запуском взгляните на содержимое папки «Загрузки» и убедитесь, что вас устраивает перемещение файлов в подпапки.

Теперь запустите скрипт, используя следующую команду:

./smart_organizer.sh

Как только процесс завершится, проверьте папку «Загрузки». Вы увидите новые папки, такие как «Изображения», «Документы», «Архивы» и «Установщики», в которых будут отсортированы ваши файлы.

Автоматизация ежедневного обслуживания

Почти каждая Linux-система использует cron для планирования автоматических действий, таких как резервное копирование, обновления и очистка.

Сам по себе cron — это всего лишь планировщик задач, но этот скрипт добавляет к нему структуру и логику, превращая простые запланированные задания в мощные автоматизированные рабочие процессы.

Приведенный ниже пример скрипта обновляет систему, очищает ненужные файлы, проверяет место на диске и ведёт логи.

#!/bin/bash
# Daily system update + cleanup

LOGFILE="/var/log/daily_maintenance.log"

echo "=== Daily maintenance started at $(date) ===" >> "$LOGFILE"

# System update
echo "Updating packages…" >> "$LOGFILE"
sudo apt update && sudo apt upgrade -y >> "$LOGFILE"

# Clean old packages
echo "Cleaning up old packages…" >> "$LOGFILE"
sudo apt autoremove -y >> "$LOGFILE"
sudo apt autoclean >> "$LOGFILE"

# Disk usage report
echo "Disk usage report:" >> "$LOGFILE"
df -h >> "$LOGFILE"

echo "=== Daily maintenance completed at $(date) ===" >> "$LOGFILE"

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

Все действия записываются в лог-файл, поэтому вы легко сможете позже проверить, что произошло и когда.

Как использовать

Сохраните как /usr/local/bin/daily-maintenance.sh, сделайте его исполняемым (chmod +x) и запланируйте его запуск с помощью cron:

crontab -e

Затем добавьте:

0 3 * * * /usr/local/bin/daily-maintenance.sh

Теперь скрипт запускается автоматически каждый день в 3 часа утра.

Скрипт автоматической установки

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

Обычно настройка системы выглядит следующим образом:

apt install git
apt install curl
apt install vim
apt install htop
apt install tmux

Это отнимает время, поэтому простой скрипт превращает все это в одну команду.

Простой автоустановщик

#!/bin/bash

sudo apt update
sudo apt install -y git curl vim htop tmux

При запуске этого скрипта Linux автоматически обновляет список пакетов и устанавливает все перечисленные инструменты, не задавая лишних вопросов. Вместо пяти ручных установок вы получаете всё за один раз.

Автоматическая блокировка SSH-брутфорса

Если ваша система Linux доступна через интернет и на ней включен SSH, она может быть уязвима.

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

Автоматический блокировщик SSH-брутфорса отслеживает повторные неудачные попытки входа в систему и блокирует исходные IP-адреса.

Пример скрипта

#!/bin/bash

LOG="/var/log/auth.log"
THRESHOLD=5

grep "Failed password" "$LOG" \
    | awk '{print $(NF-3)}' \
    | sort \
    | uniq -c \
    | while read count ip; do

        if [ "$count" -ge "$THRESHOLD" ]; then
            iptables -A INPUT -s "$ip" -j DROP
            echo "$(date): Blocked $ip after $count failed attempts" \
                >> /var/log/ssh_blocker.log
        fi

    done

Этот скрипт, по сути, говорит: «Если кто-то слишком часто (5 попыток) неправильно входит по SSH, запретите ему повторные попытки».

Таким образом, блокировщик атак методом перебора паролей SSH защищает вашу систему, отслеживая повторные неудачные попытки входа по SSH и автоматически блокируя злоумышленников.

Утилита очистки системы

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

Скрипт очистки

#!/bin/bash

LOG="/var/log/cleanup.log"

echo "$(date) - Starting system cleanup" >> "$LOG"

sudo apt autoremove -y >> "$LOG" 2>&1
sudo apt autoclean -y >> "$LOG" 2>&1

echo "$(date) - Cleanup finished" >> "$LOG"

Этот скрипт очищает вашу систему и записывает, когда это произошло и что было сделано. Он удаляет ненужные файлы, помогая вашей системе Linux оставаться чистой, эффективной и свободной от проблем с дисковым пространством.

До встречи в следующий раз!

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.