Linux викторина №26-30: что делает команда/скрипт на изображении?

Linux викторина №26-30: что делает команда/скрипт на изображении?

 

Полученные результаты

#1. Что делает команда на изображении выше?

Команда:

for i in *.txt; do mv "$i" "${i%.txt}.bak"; done

Описание:

Цикл for перебирает все файлы с расширением .txt в текущей директории. Символ % в ${i%.txt} удаляет .txt из имени файла, а mv переименовывает его в .bak, сохраняя остальную часть имени.

Предыдущий
Следующий

#2. Что делает команда на изображении выше?

Команда:

ss -tuln | awk '{print $5}' | grep -Eo ':[0-9]+$' | sort -t: -k2 -n -u

Описание: Команда выводит уникальные номера портов из активных TCP/UDP соединений. ss -tuln показывает соединения, awk извлекает адреса, grep фильтрует порты, sort сортирует и удаляет дубликаты.

  • ss: -t – отображает TCP-соединения, -u – отображает UDP-соединения, -l – показывает только прослушивающие сокеты, -n – выводит адреса и порты в числовом формате
  • awk: '{print $5}' – выводит пятый столбец (адреса и порты)
  • grep: -E – использует расширенные регулярные выражения, -o – выводит только совпадения (в данном случае порты)
  • sort: -t: – задает разделитель полей как двоеточие, -k2 – сортирует по второму полю (номер порта), -n – сортирует числовые значения, -u – удаляет дубликаты
Предыдущий
Следующий

#3. Что делают команды на изображении выше?

Команда №1

iptables -A INPUT -p icmp --icmp-type echo-request -m recent --set --name PING_LIST

Команда №2

iptables -A INPUT -p icmp --icmp-type echo-request -m recent --update --seconds 10 --hitcount 5 --name PING_LIST -j DROP

Описание: эти команды добавляют правила фаервола в Linux, которые ограничивают частоту ICMP-запросов (ping). Первая команда добавляет IP-адрес каждого ICMP-запроса типа echo-request в список recent с именем PING_LIST. Вторая команда проверяет, был ли IP в списке и отправил ли более 5 запросов за последние 10 секунд (--update --seconds 10 --hitcount 5). Если проверка выполняется, дальнейшие запросы блокируются (DROP). После отсутствия запросов в течение 10 сек. запросы вновь принимаются.

Предыдущий
Следующий

#4. Что выведет скрипт на изображении выше, запущенный от обычного пользователя?

Скрипт:

#!/bin/bash

set -e

BACKUP_DIR="backups"
mkdir -p "$BACKUP_DIR"
ssh user@remote-server "tar -czf - /var/www" > "$backups/www_backup_$(date +%F).tar.gz"
echo "Backup created: $BACKUP_DIR/www_backup_$(date +%F).tar.gz"

Описание: скрипт должен создать резервную копию директории /var/www с удалённого сервера, но завершается ошибкой Permission denied:

  • set -e: заставляет скрипт завершиться с ошибкой, если любая команда внутри скрипта возвращает ненулевой код завершения;
  • BACKUP_DIR="backups": устанавливается путь к локальной директории;
  • mkdir -p "$BACKUP_DIR": в текущей директории создаёт директорию с именем backups, опция -p позволяет не выводить ошибку, если каталог уже существует;
  • ssh user@remote-server "tar -czf - /var/www": подключается по SSH к удалённому серверу (user@remote-server) и запускает команду tar, чтобы создать архив с каталога /var/www, параметры -czf - означают, что архив будет сжат, а данные выводиться в стандартный поток;
  • > "$backups/www_backup_$(date +%F).tar.gz": пытается перенаправить поток в локальный файл по пути $backups/www_backup_$(date +%F).tar.gzно т.к. переменной $backups не существует (ее значение пустая строка), то скрипт попытается выполнить запись по пути /www_backup_$(date +%F).tar.gz и завершится ошибкой Permission denied, т.к. обычные пользователи не могут создавать файлы в корне файловой системы;
  • echo "Backup created: $BACKUP_DIR/www_backup_$(date +%F).tar.gz": эта команда выводит сообщение о том, что резервная копия была создана, и указывает путь к файлу, но т.к. предыдущая команда завершилась ошибкой из-за установленного параметра set -e, то скрипт прекратит свою работу и проигнорирует остальной код.
Предыдущий
Следующий

#5. Что выведет скрипт на изображении выше?

Скрипт:

#!/bin/bash

set -e
file="/tmp/file.txt"
echo "Simple text with error word" > "$file"
grep -qi "ERROR" "$file" && echo "$file contains errors" || echo "$file is clean"

Описание:

  1. set -e — устанавливает режим работы скрипта, при котором он прекратит работу в случае любой ошибки в процессе выполнения
  2. file="/tmp/file.txt" — определяет переменную file, которая содержит путь к файлу /tmp/file.txt
  3. echo "Simple text with error word" > "$file" — записывает строку “Simple text with error word” в файл, указанный в переменной file.
  4. grep -qi "ERROR" "$file" && echo "$file contains errors" || echo "$file is clean" — ищет слово error игнорируя регистр (-i, –ignore-case) в файле, указанном в переменной file и если находит, выводит сообщение о наличии ошибок, в ином случае сообщает, что файл чист
Предыдущий
Проверить

Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии