Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| linux:linux:scripts [2025/08/26 04:32] – Luciferus | linux:linux:scripts [2025/09/17 20:55] (текущий) – удалено Luciferus | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Скрипты, | ||
| - | ===== Замена пробелов знаком подчеркивания ===== | ||
| - | |||
| - | Не так уж и редко есть необходимость заменить пробелы в именах файлов на подчеркивание. | ||
| - | |||
| - | <hidden Развернуть blank-rename.sh> | ||
| - | <code bash> | ||
| - | #!/bin/bash | ||
| - | # | ||
| - | # Скрипт blank-rename.sh | ||
| - | # Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге. | ||
| - | |||
| - | ONE=1 # единственное или множественное число (см. ниже). | ||
| - | number=0 | ||
| - | FOUND=0 | ||
| - | |||
| - | for filename in * # Перебор всех файлов в текущем каталоге. | ||
| - | do | ||
| - | echo " | ||
| - | if [ $? -eq $FOUND ] | ||
| - | then | ||
| - | | ||
| - | | ||
| - | mv " | ||
| - | let " | ||
| - | fi | ||
| - | done | ||
| - | |||
| - | if [ " | ||
| - | then | ||
| - | echo " | ||
| - | else | ||
| - | echo " | ||
| - | fi | ||
| - | |||
| - | exit 0 | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Конвертирование аудиофайлов в MP3 из FLAC ===== | ||
| - | |||
| - | Иногда требуется переконвертировать аудиофайлы из одного формата или битрейта в другой, | ||
| - | |||
| - | <hidden Развернуть conv2mp3.sh> | ||
| - | <code bash> | ||
| - | #!/bin/bash | ||
| - | ### Заменить flac на другой аудиформат, | ||
| - | ### Скрипт конвертации аудиофайлов conv2mp3.sh | ||
| - | |||
| - | cd ./ && mkdir ./conv | ||
| - | for f in *.flac; do flac -cd " | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Мониторинг системы ===== | ||
| - | |||
| - | Показывает информацию о текущем железе, | ||
| - | |||
| - | <hidden Развернуть sysfull_info.sh> | ||
| - | <code bash> | ||
| - | #!/bin/bash | ||
| - | ### Скрипт вывода информации о unix-like системах | ||
| - | ### Сделайте скрипт исполняемым: | ||
| - | |||
| - | # Цветовые коды | ||
| - | ORANGE=' | ||
| - | YELLOW=' | ||
| - | RED=' | ||
| - | GREEN=' | ||
| - | WHITE=' | ||
| - | CIAN=' | ||
| - | MAGENTA=' | ||
| - | PINK=' | ||
| - | NC=' | ||
| - | |||
| - | section() { | ||
| - | echo -e " | ||
| - | } | ||
| - | |||
| - | # Проверка прав | ||
| - | if [ " | ||
| - | echo -e " | ||
| - | fi | ||
| - | |||
| - | section " | ||
| - | |||
| - | echo "" | ||
| - | |||
| - | CURRENT_DATE=$(date ' | ||
| - | UPTIME=$(uptime -p) | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | |||
| - | echo "" | ||
| - | |||
| - | # Состояние основных компонентов | ||
| - | CPU_NAME=$(cat / | ||
| - | CPU_TEMP=$(sensors | grep ' | ||
| - | FAN_RPM=$(sensors | grep ' | ||
| - | CPU_LOAD=$(top -bn1 | grep ' | ||
| - | MEM_INFO=$(free -m | awk '/ | ||
| - | MEM_USED=$(echo $MEM_INFO | awk ' | ||
| - | MEM_TOTAL=$(echo $MEM_INFO | awk ' | ||
| - | MEM_PERCENT=$((MEM_USED * 100 / MEM_TOTAL)) | ||
| - | ZOMBIES=$(ps axo state | grep -c ' | ||
| - | |||
| - | echo -e " | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | |||
| - | echo "" | ||
| - | |||
| - | echo -e " | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | if [ " | ||
| - | ps -eo pid, | ||
| - | echo -e " | ||
| - | done | ||
| - | fi | ||
| - | |||
| - | echo "" | ||
| - | |||
| - | #section " | ||
| - | detect_gpu() { | ||
| - | # NVIDIA | ||
| - | if command -v nvidia-smi &> /dev/null; then | ||
| - | GPU_NAME=$(nvidia-smi --query-gpu=gpu_name --format=csv, | ||
| - | GPU_VRAM=$(nvidia-smi --query-gpu=memory.used --format=csv, | ||
| - | GPU_TEMP=$(nvidia-smi --query-gpu=temperature.gpu --format=csv, | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | # AMD | ||
| - | elif [ -d / | ||
| - | GPU_NAME=$(cat / | ||
| - | if [ -n " | ||
| - | GPU_TEMP=$(sensors | grep ' | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | fi | ||
| - | # Intel | ||
| - | elif [ -d / | ||
| - | echo -e " | ||
| - | else | ||
| - | echo -e " | ||
| - | fi | ||
| - | } | ||
| - | detect_gpu | ||
| - | |||
| - | echo "" | ||
| - | |||
| - | # Начало блока " | ||
| - | services=(" | ||
| - | for service in " | ||
| - | if systemctl is-active --quiet $service 2>/ | ||
| - | status=" | ||
| - | else | ||
| - | status=" | ||
| - | fi | ||
| - | echo -e " | ||
| - | done | ||
| - | # Конец блока " | ||
| - | echo "" | ||
| - | |||
| - | # Доступные обновления | ||
| - | if command -v apt &> /dev/null; then | ||
| - | updates=$(apt list --upgradable 2>/ | ||
| - | if [ $updates -gt 1 ]; then | ||
| - | echo -e " | ||
| - | else | ||
| - | echo -e " | ||
| - | fi | ||
| - | else | ||
| - | echo -e " | ||
| - | fi | ||
| - | |||
| - | REBOOT_NEEDED=$(if [ -f / | ||
| - | echo -e " | ||
| - | |||
| - | echo "" | ||
| - | |||
| - | # Сетевой трафик | ||
| - | NET_STATS=$(netstat -i | grep -E ' | ||
| - | RX_MB=$(echo " | ||
| - | TX_MB=$(echo " | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | |||
| - | echo "" | ||
| - | |||
| - | disk_info() { | ||
| - | local device=$1 | ||
| - | local device_name=${device## | ||
| - | local device_type | ||
| - | local model | ||
| - | local temp | ||
| - | local health | ||
| - | local errors="" | ||
| - | local disk_size | ||
| - | |||
| - | if [[ $device == *" | ||
| - | device_type=" | ||
| - | model=$(nvme list | grep " | ||
| - | temp=$(nvme smart-log $device | grep ' | ||
| - | health=$(nvme smart-log $device | grep ' | ||
| - | health=" | ||
| - | elif [[ $(cat / | ||
| - | device_type=" | ||
| - | model=$(smartctl -i $device | awk -F': ' '/ | ||
| - | temp=$(smartctl -a $device | awk '/ | ||
| - | health=$(smartctl -a $device | grep -m1 ' | ||
| - | else | ||
| - | device_type=" | ||
| - | model=$(smartctl -i $device | awk -F': ' '/ | ||
| - | temp=$(smartctl -a $device | awk '/ | ||
| - | |||
| - | # SMART-статус для HDD | ||
| - | smart_status=$(smartctl -H $device | grep ' | ||
| - | if [[ " | ||
| - | health=" | ||
| - | else | ||
| - | # Проверка конкретных ID атрибутов | ||
| - | critical_errors=$(smartctl -A $device | awk ' | ||
| - | $1 == 1 && $10 > 0 { printf " | ||
| - | $1 == 5 && $10 > 0 { printf " | ||
| - | $1 == 7 && $10 > 0 { printf " | ||
| - | $1 == 187 && $10 > 0 { printf " | ||
| - | $1 == 194 && $10 > 60 { printf "Temp: %d°C ", $10 } | ||
| - | $1 == 196 && $10 > 0 { printf " | ||
| - | $1 == 197 && $10 > 0 { printf " | ||
| - | $1 == 198 && $10 > 0 { printf " | ||
| - | $1 == 199 && $10 > 0 { printf " | ||
| - | $1 == 200 && $10 > 0 { printf " | ||
| - | ') | ||
| - | health=" | ||
| - | errors=" | ||
| - | fi | ||
| - | fi | ||
| - | |||
| - | # Получаем размер диска | ||
| - | disk_size=$(lsblk -bdno SIZE $device | numfmt --to=iec --format " | ||
| - | |||
| - | # Вывод основной информации | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | echo -e " | ||
| - | |||
| - | if [[ -n " | ||
| - | echo -e " | ||
| - | fi | ||
| - | |||
| - | # Получаем смонтированные разделы | ||
| - | partitions=$(lsblk -lno NAME, | ||
| - | |||
| - | if [[ -n " | ||
| - | echo -e " | ||
| - | |||
| - | # Выводим разделы | ||
| - | counter=0 | ||
| - | while IFS= read -r part; do | ||
| - | part_name=$(echo " | ||
| - | part_size=$(echo " | ||
| - | part_mount=$(echo " | ||
| - | used=$(df -h / | ||
| - | [[ -z " | ||
| - | |||
| - | if [[ $counter -eq $(($(echo " | ||
| - | symbol=" | ||
| - | else | ||
| - | symbol=" | ||
| - | fi | ||
| - | |||
| - | echo -e " | ||
| - | ((counter++)) | ||
| - | done <<< | ||
| - | else | ||
| - | echo -e " | ||
| - | fi | ||
| - | echo "" | ||
| - | } | ||
| - | |||
| - | section " | ||
| - | echo "" | ||
| - | { | ||
| - | # Сначала NVMe | ||
| - | lsblk -dno NAME, | ||
| - | # Затем SSD (не NVMe) | ||
| - | lsblk -dno NAME, | ||
| - | # Затем HDD | ||
| - | lsblk -dno NAME, | ||
| - | } | while read -r disk; do | ||
| - | disk_info "/ | ||
| - | done | ||
| - | |||
| - | exit | ||
| - | </ | ||
| - | </ | ||