ДИГИТАЛЕН СВЯТ

Регистрирайте безплатен акаунт днес, за да станете член! След като влезете, ще можете да участвате в този сайт, като добавяте свои собствени теми и публикации, както и да се свързвате с други членове чрез вашата лична пощенска кутия!

linux 🚀 ПЪЛНА ВТОРА ЧАСТ: Напреднали Linux техники и инструменти

toni

Administrator
Staff member

🚀 ПЪЛНА ВТОРА ЧАСТ: Напреднали Linux техники и инструменти

За разработчици, системни администратори и ентусиасти


🔧РАЗШИРЕНИ BASH СКРИПТОВЕ И ТЕХНИКИ

📝ПРОМЕНЛИВИ И МАСИВИ

Bash:
# Специални променливи
echo "Име на скрипт: $0"
echo "Брой аргументи: $#"
echo "Всички аргументи: $@"
echo "Първи аргумент: $1"
echo "Последен код за изход: $?"

# Масиви
files=(file1.txt file2.txt file3.txt)
echo "Първи файл: ${files[0]}"
echo "Всички файли: ${files[@]}"
echo "Брой елементи: ${#files[@]}"


🔄УСЛОВНИ КОНСТРУКЦИИ
Bash:
# if-elif-else
if [[ -f "$file" ]]; then
echo "Файлът съществува"
elif [[ -d "$dir" ]]; then
echo "Това е директория"
else
echo "Не съществува"
fi

# Case statement
case "$1" in
start)
echo "Стартиране..."
;;
stop)
echo "Спиране..."
;;
*)
echo "Използвай: $0 {start|stop}"
;;
esac


🔁 ЦИКЛИ И ФУНКЦИИ
Bash:
# For цикъл
for i in {1..5}; do
echo "Итерация $i"
done

for file in *.txt; do
echo "Обработвам: $file"
done

# While цикъл
counter=0
while [[ $counter -lt 5 ]]; do
echo "Брояч: $counter"
((counter++))
done

# Функции
log_message() {
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] $1" >> /var/log/myscript.log
}

# Извикване
log_message "Стартирах скрипта"

🎯ПРАКТИЧЕСКИ ПРИМЕРИ
Bash:
#!/bin/bash
# Скрипт за бекъп
BACKUP_DIR="/backup/$(date +%Y%m%d)"
SOURCE_DIR="/var/www"

mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/website_backup.tar.gz" "$SOURCE_DIR"

if [[ $? -eq 0 ]]; then
echo "Бекъп успешен: $BACKUP_DIR"
else
echo "Бекъп неуспешен!" >&2
exit 1
fi

🧮РЕГУЛЯРНИ ИЗРАЗИ (REGEX) В LINUX

📊ОСНОВНИ МЕТАСИМВОЛИ

ПатернЗначениеПример
.Всеки един символa.c → abc, a&c
^Начало на ред^start
$Край на редend$
*0 или повече повторенияa*b → b, aab
+1 или повече повторенияa+b → ab, aab
?0 или 1 повторениеa?b → b, ab
[]Символен клас[aeiou] → гласна
[^]Отрицание на клас[^0-9] → не-цифра
()Група(ab)+ → ab, abab
|ИЛИcat|dog
\dЦифра\d+ → числа
\wБуквено-цифров символ\w+ → думи


🔍РЕАЛНИ ПРИМЕРИ С GREP И SED

Bash:
# Търсене на IP адреси
grep -E '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' file.log

# Търсене на email адреси
grep -E '\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' contacts.txt

# Заместване с sed
sed -E 's/([0-9]+)-([0-9]+)-([0-9]+)/\3.\2.\1/g' dates.txt
# Превръща 2024-12-31 → 31.12.2024

# Валидация на потребителски имена
if [[ "$username" =~ ^[a-z][a-z0-9_]{3,15}$ ]]; then
echo "Валидно име"
fi

📋ЧЕСТО ИЗПОЛЗВАНИ REGEX ШАБЛОНИ

Bash:
# URL
https?://[a-zA-Z0-9./?=_-]+

# Телефонен номер (БГ)
\+?359[ -]?[0-9]{1,3}[ -]?[0-9]{3}[ -]?[0-9]{3,4}

# Дата (DD/MM/YYYY)
(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/[0-9]{4}

# Парола (минимум 8 знака, главна, малка, цифра)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d\W]{8,}$

🛡 СИГУРНОСТ И АУДИТ КОМАНДИ

🔐АУДИТ НА ПОТРЕБИТЕЛИ И ПРАВА

Bash:
# Проверка за потребители с root права
grep -E ':0:' /etc/passwd

# Показване на всички потребители в sudo групата
getent group sudo | cut -d: -f4 | tr ',' '\n'

# Проверка на SUID/SGID файлове
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \; 2>/dev/null

# Аудит на файлове без собственик
find / -nouser -o -nogroup 2>/dev/null

# Проверка на права за .ssh директории
find /home -name ".ssh" -type d -exec ls -ld {} \;

📊 МОНИТОРИНГ НА СИСТЕМАТА
Bash:
# Проверка за отворени портове
sudo netstat -tulpn
# или
sudo ss -tulpn

# Проследяване на мрежови връзки в реално време
sudo tcpdump -i any -n

# Проверка за неоторизирани cron задачи
sudo cat /etc/crontab
ls -la /etc/cron.*/
ls -la /var/spool/cron/

# Аудит на login активности
last -a
sudo cat /var/log/auth.log | grep -i "failed\|accepted"


🔍ИНСТРУМЕНТИ ЗА АНАЛИЗ

Bash:
# Lynis - Системен аудит
sudo lynis audit system

# Chkrootkit - Проверка за rootkits
sudo chkrootkit

# Rkhunter - Търсене на зловреден софтувер
sudo rkhunter --check

# ClamAV - Антивирусен скенер
sudo freshclam    # Обновяване на базата
sudo clamscan -r /home


🚨РЕАКТИВНИ КОМАНДИ ПРИ ИНЦИДЕНТ

Bash:
# Запазване на текущи процеси
ps aux > /tmp/processes_$(date +%s).txt
netstat -tulpn > /tmp/network_$(date +%s).txt

# Проверка за скрити процеси
ls -la /proc/*/exe 2>/dev/null | grep deleted

# Анализ на логове за подозрителни дейности
sudo journalctl -xe --since "1 hour ago"
sudo grep -i "error\|fail\|denied\|attack" /var/log/*.log

📈 МОНИТОРИНГ И DEBUGGING ИНСТРУМЕНТИ

🖥 РЕАЛЕН ТИМ МОНИТОРИНГ

Bash:
# htop - Разширен процес монитор
sudo apt install htop
htop

# glances - Всестранен мониторинг
sudo apt install glances
glances

# nmon - Мониторинг за системата
sudo apt install nmon
nmon

# btop - Модерен монитор с графики
sudo apt install btop
btop


📊 СИСТЕМНА ДИАГНОСТИКА

Bash:
# iotop - Мониторинг на дисков I/O
sudo iotop -o

# iftop - Мониторинг на мрежов трафик
sudo iftop -i eth0

# dstat - Комбинирана статистика
dstat -cdngy

# vmstat - Виртуална памет и процеси
vmstat 2 10  # 10 отчета на всеки 2 секунди


🐛 DEBUGGING И ПРОСЛЕДЯВАНЕ

Bash:
# strace - Проследяване на системни извиквания
strace -f -e trace=file ls -la
strace -p <PID>  # Проследяване на конкретен процес

# ltrace - Проследяване на библиотечни извиквания
ltrace ls -la

# gdb - GNU Debugger за C/C++ програми
gdb ./myprogram
# Основни команди в gdb:
#   break main      # Точка на прекъсване
#   run            # Стартиране
#   backtrace      # Стек на извикванията
#   print variable # Извеждане на стойност
#   quit           # Изход

# valgrind - Проверка за memory leaks
valgrind --leak-check=full ./myprogram


📈ПРОФИЛИРАНЕ НА ПРОДУКТИВНОСТ

Bash:
# time - Измерване на време за изпълнение
time ./my_script.sh
# Резултат: real (общо), user (CPU), sys (ядро)

# perf - Linux Performance Counters
perf stat ./myprogram      # Обща статистика
perf record ./myprogram # Записване на данни
perf report  # Анализ на записа

# pidstat - Статистика по процеси
pidstat -urd -p <PID> 2 5  # 5 отчета на 2 секунди


🔧ПРИЛОЖЕНИ СКРИПТОВЕ ЗА МОНИТОРИНГ

Bash:
#!/bin/bash
# system_health_check.sh

LOGFILE="/var/log/system_health_$(date +%Y%m%d).log"

echo "=== Системен Health Check $(date) ===" | tee -a "$LOGFILE"
echo "" | tee -a "$LOGFILE"

echo "1. 🔋 Зареждане на системата:" | tee -a "$LOGFILE"
uptime | tee -a "$LOGFILE"
echo "" | tee -a "$LOGFILE"

echo "2. 🧠 Употреба на памет:" | tee -a "$LOGFILE"
free -h | tee -a "$LOGFILE"
echo "" | tee -a "$LOGFILE"

echo "3. 💾 Дисково пространство:" | tee -a "$LOGFILE"
df -h | tee -a "$LOGFILE"
echo "" | tee -a "$LOGFILE"

echo "4. 🔥 Топ 5 процеса по CPU:" | tee -a "$LOGFILE"
ps aux --sort=-%cpu | head -6 | tee -a "$LOGFILE"
echo "" | tee -a "$LOGFILE"

echo "5. 🌐 Мрежови връзки:" | tee -a "$LOGFILE"
ss -tulpn | grep LISTEN | tee -a "$LOGFILE"

echo "=== Проверката завърши ===" | tee -a "$LOGFILE"

🎓ПРАКТИЧЕСКИ УПРАЖНЕНИЯ

🎯 ЗАДАЧА 1: Създаване на автоматизиран бекъп скрипт

Bash:
#!/bin/bash
# auto_backup.sh

BACKUP_DIR="/backup/$(date +%Y%m%d_%H%M%S)"
SOURCES=("/var/www" "/etc" "/home/important")
RETENTION_DAYS=7

echo "📦 Стартиране на бекъп: $(date)"

mkdir -p "$BACKUP_DIR"

for source in "${SOURCES[@]}"; do
if [[ -e "$source" ]]; then
name=$(basename "$source")
echo "  📁 Архивирам: $source"
tar -czf "$BACKUP_DIR/${name}.tar.gz" "$source"
else
echo "  ⚠  Пропускам: $source (не съществува)"
fi
done

echo "🧹 Почистване на стари бекъпове (> $RETENTION_DAYS дни)"
find /backup -type d -mtime +$RETENTION_DAYS -exec rm -rf {} \;

echo "✅ Бекъп завършен: $BACKUP_DIR"


🎯ЗАДАЧА 2: Мониторинг на логове за грешки

Bash:
#!/bin/bash
# log_monitor.sh

LOG_FILES=("/var/log/syslog" "/var/log/auth.log")
ALERT_EMAIL="admin@example.com"
KEYWORDS=("ERROR" "FAILED" "denied" "attack")

while true; do
for logfile in "${LOG_FILES[@]}"; do
for keyword in "${KEYWORDS[@]}"; do
if tail -n 50 "$logfile" | grep -q -i "$keyword"; then
echo "🚨 Намерена ключова дума '$keyword' в $logfile"
echo "Съдържание:" | mail -s "АЛАРМ: $keyword в $logfile" "$ALERT_EMAIL"
tail -n 10 "$logfile" | mail -s "Подробности" "$ALERT_EMAIL"
fi
done
done
sleep 60  # Проверка на всеки 60 секунди
done

📚РЕСУРСИ И ДОПЪЛНИТЕЛНИ ИНСТРУМЕНТИ

🛠 ИНСТАЛИРАНЕ НА ДОПЪЛНИТЕЛНИ ИНСТРУМЕНТИ

Bash:
# Сигурност и аудит
sudo apt install lynis chkrootkit rkhunter clamav

# Мониторинг
sudo apt install htop glances nmon btop iotop iftop dstat

# Debugging
sudo apt install strace ltrace gdb valgrind linux-tools-common

# Мрежови инструменти
sudo apt install nmap tcpdump wireshark netcat

📖ПРЕПОРЪЧИТЕЛНА ЛИТЕРАТУРА

  1. "Advanced Bash-Scripting Guide" - https://tldp.org/LDP/abs/html/
  2. "The Linux Command Line" - Уилям Шотс
  3. "Mastering Regular Expressions" - Джефри Фрийдъл
  4. "Linux Performance" - Брендан Грег

🎥ОБУЧИТЕЛНИ ВИДЕО КАНАЛИ

  • NetworkChuck (английски)
  • The Linux Foundation (официални курсове)
  • Български Linux общности във Facebook

ВАЖНИ ПРЕДУПРЕЖДЕНИЯ

  1. Тествайте върху виртуална машина преди употреба в production
  2. Винаги правете бекъп преди системни промени
  3. Разбирайте командите, които изпълнявате
  4. Използвайте man страниците: man grep, man regex
  5. Логовете са вашият приятел - проверявайте ги редовно

🤝 КАК ДА ПОМОГНЕМ НА ДРУГИ?

  1. Споделяйте своите скриптове и решения
  2. Пишете коментари в кода си
  3. Създавайте документация за вашите инструменти
  4. Участвайте в българските Linux общности

💡 Съвет: Започнете с малки скриптове и постепенно добавяйте функционалност. Практиката е най-добрият учител!

❓ Имате въпроси или нужда от помощ с конкретен скрипт? Питайте в коментарите!

📌 Забележка: Тази тема е продължение на основния чийт лист с Linux команди. Препоръчва се да се използват заедно.



Създадено с 💻 за българската Linux общност. Споделяйте, модифицирайте, подобрявайте!

🔗 Линк към Първа част: Основен Linux Чийт лист

🔗 Линк към Трета част: DevOps & Security инструменти - Docker, Python за автоматизация и още 🐋🐍



🖋️ Автор: Тони Ангелчовски | Ексклузивно за DTGaraGe
🔒 Копирането и препубликуването без разрешение не е позволено
☕ Подкрепи проекта:
https://dtgarage.eu/donate
 
Last edited:
Top Bottom
🛡️ Този сайт използва аналитични инструменти за подобряване на потребителското изживяване. Никакви лични данни не се събират. С продължаването си в Потока приемаш тази философия на прозрачност и уважение.