61

Re: bash скрипти

Таке враження, що не переходить у вказану теку. А спробуйте cd зробити без  sudo.

62

Re: bash скрипти

Дякую, на іншому ресурсі мені пояснили що проблема в sudo - в кронтабі під рутом такої проблеми нема.

63

Re: bash скрипти

Пам'ять не може бути READ написав:

Ось і знайшов. Суть скрипта у тому, що він завантажує усі шрифти з сайту ukrfonts.com.

     page_number=0
    save="/home/Hanter/Шрифти/"
    while [ $page_number -lt 6000 ]
    do
        page_number=`expr $page_number + 1`
        wget --content-disposition --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0" --post-data="v=19&idn=$page_number" www.ukrfonts.com/info/download.php -P $save
    done
    cd $save
    rm *.html
    rm *.html.?
Подякували: HetmanNet1

64 Востаннє редагувалося frz (23.11.2023 01:14:14)

Re: bash скрипти

Ван-лайнер для видалення старих версій програм, що були встановлені через snap:

snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then sudo snap remove "$snapname" --revision="$rev"; fi; done

Чомусь воно не робиться само. В результаті в папці /var/lib/snapd/snaps накопичуються старі пакунки тієї ж програми.

Запис кронтаб root для запуску щотижня:

5 21 * * Sun snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then snap remove "$snapname" --revision="$rev"; fi; done
дескрипшн

This is a cron job that is set to run a command every Sunday at 21:05. The command it runs is used to clean up old versions of installed Snap packages.

Here's a breakdown of the command:

snap list --all: This lists all installed Snap packages, including their version and revision numbers, tracking channels, publishers, and notes.

while read snapname ver rev trk pub notes; do ... done: This is a loop that reads each line of output from the snap list --all command. It splits each line into variables (snapname, ver, rev, trk, pub, notes).

if [[ $notes = *disabled* ]]; then snap remove "$snapname" --revision="$rev"; fi: This is a conditional statement that checks if the notes variable contains the word "disabled". If it does, it means that the Snap package version is not currently in use, so the snap remove "$snapname" --revision="$rev" command is used to remove that version of the package.

So, in summary, this cron job automatically removes old, disabled versions of installed Snap packages every Sunday at 21:05.

65 Востаннє редагувалося frz (28.03.2024 22:41:32)

Re: bash скрипти

Запис crontab для перевірки кожні три години, чи основна партиція лінукс ("/") має як мінімум 500 мегабайт вільного місця, якщо ні то надсилаємо алерт на вказаний email:

0 */3 * * * [ $(df / | tail -1 | awk '{print $4}') -lt 500000 ] && echo "SERVER_NAME disk space is less than 500MB" | mail -s "SERVER_NAME disk Space Alert" user1@example.com

Потрібна утиліта mailutils (ubuntu i debian-подібні дистрибутиви)

sudo apt-get update && sudo apt-get install mailutils

66

Re: bash скрипти

Не зовсім bash, швидше команда в терміналі для ресету налаштувань монітора (не знаю куди краще запостити)

xrandr -s 1600x900

67 Востаннє редагувалося frz (08.10.2025 11:00:32)

Re: bash скрипти

Блокуємо вхідний трафік від зловмисника який спамить веб-форми:

sudo iptables -A INPUT -s XX.YY.NN.MM -p tcp -m multiport --dports 80,443 -j DROP

Записуємо виконану команду перманентно аби не зникло після ребуту:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Вищевказане стосується айпі, про яку точно знаємо що це зловмисник, про всяк випадок перевіряємо в базі abuse:
https://www.abuseipdb.com/

68

Re: bash скрипти

Моніторимо використання ресурсів в розрізі окремих процесів із "білим списком", надсилаємо алерт при перевищенні порогу.

#!/bin/bash
THRESHOLD=50
WHITELIST=("firefox" "apt" "clamav")

for pid in $(ps -eo pid,comm,%cpu --sort=-%cpu | awk 'NR>1 {print $1}')
do
    name=$(ps -p $pid -o comm=)
    cpu=$(ps -p $pid -o %cpu= | awk '{print int($1)}')
    [[ " ${WHITELIST[@]} " =~ " $name " ]] && continue
    if [ "$cpu" -gt "$THRESHOLD" ]; then
        echo "High CPU: $name ($cpu%)"
    fi
done

Альтернатива - тулза Monit.

69

Re: bash скрипти

Заміна запису про автора всіх комітів в github, наприклад комітив за допомогою робочих даних, а потрібно за допомогою особистих:

python -m pip install git-filter-repo

(тут і далі використовується кастомний ключ ssh)

ssh-agent bash -c 'ssh-add /home/user1/.ssh/id_n && \
git filter-repo --force --commit-callback "
commit.author_name = b\"user1\"
commit.author_email = b\"u@example.com\"
commit.committer_name = b\"user1\"
commit.committer_email = b\"u@example.com\"
"'
ssh-agent bash -c 'ssh-add /home/user1/.ssh/id_n; git remote add origin git@github.com:user1/repo1.git'
ssh-agent bash -c '
  ssh-add /home/user1/.ssh/id_n && \
  git push --force origin main && \
  git push --force origin --tags
'

70

Re: bash скрипти

frz написав:

Заміна запису про автора всіх комітів в github, наприклад комітив за допомогою робочих даних, а потрібно за допомогою особистих:

python -m pip install git-filter-repo

(тут і далі використовується кастомний ключ ssh)

ssh-agent bash -c 'ssh-add /home/user1/.ssh/id_n && \
git filter-repo --force --commit-callback "
commit.author_name = b\"user1\"
commit.author_email = b\"u@example.com\"
commit.committer_name = b\"user1\"
commit.committer_email = b\"u@example.com\"
"'
ssh-agent bash -c 'ssh-add /home/user1/.ssh/id_n; git remote add origin git@github.com:user1/repo1.git'
ssh-agent bash -c '
  ssh-add /home/user1/.ssh/id_n && \
  git push --force origin main && \
  git push --force origin --tags
'

Надалі можна використовувати дані комітера / автора для саме цього коміту:

ssh-agent bash -c '
  ssh-add /home/user1/.ssh/id_n && \
  GIT_AUTHOR_NAME="user1" \
  GIT_AUTHOR_EMAIL="u@example.com" \
  GIT_COMMITTER_NAME="user1" \
  GIT_COMMITTER_EMAIL="u@example.com" \
  git commit -m "comment"
'

71

Re: bash скрипти

Скачування даних з віддаленого інстансу в поточну папку через ssh - весь вміст /home/remote_user, зберігаючи структуру та часові мітки, дозволяючи відновлення, ігноруючи овнера і права доступу

rsync -aH --no-owner --no-group --no-perms --partial --progress remote_user@remote_host:/home/remote_user/ ./

72 Востаннє редагувалося frz (15.03.2026 12:51:13)

Re: bash скрипти

How to manually mount a partition
https://askubuntu.com/questions/1029040 … -partition

73

Re: bash скрипти

Декілька консольних команд / потенційних баш скриптів для покращення роботи wi-fi.

Зненацька після оновлення пакетів одна з wi-fi мереж почала різко нестабільно працювати - але лише на даному ноуті. Став копати.

Перевіряємо статус ощадного живлення для віфі:

iw dev wlan0 get power_save

(замість wlan0 підставити свою назву модуля віфі, який можна знайти командою ifconfig)

Якщо "on", тобто режим ввімкнено, тоді вимкнути:

sudo iw dev wlan0 set power_save off

Записати на постійно:

sudo nano /etc/NetworkManager/conf.d/wifi-powersave.conf

Додати записи:

[connection]
wifi.powersave = 2

Перезавантажити менеджер мережі:

sudo systemctl restart NetworkManager

----

Змусити частіше сканувати віфі для кращої зв'язки:

sudo nano /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf

змінити існуючий запис на:

wifi.powersave = 2

перезавантажити менеджер мережі:

sudo systemctl restart NetworkManager

Насильно обирати 2.4 GHz замість 5 GHz, бо слабший сигнал подорожує краще на частоті 2.4 GHz:

nmcli dev wifi
nmcli connection modify "wifi_name_here" 802-11-wireless.band bg

Збільшити силу сигналу на модулі віфі:

sudo iwconfig wlan0 txpower 30

В результаті для мене сигнал віфі через дві стіни став стабільним.

74

Re: bash скрипти

Wi-Fi "то є, то немає" і як це виправити на Linux (Ubuntu)

Операційна система: Ubuntu 24.04 LTS (NetworkManager). Підхід також підходить для інших версій Ubuntu/Debian з NetworkManager (перевірено додатково на Ubuntu 20.04).

Швидкість інтернету за speedtest нормальна, але з'єднання періодично "відвалюється". Перепідключення відбувається само, але це заважає дзвінкам, віддаленій роботі тощо.

Причина в моєму випадку не провайдер і не сам ноутбук, а домашня мережа з кількома точками доступу під однаковим іменем (SSID) :

- основний роутер + Wi-Fi репітер/підсилювач сигналу;
- або mesh-система з кількох вузлів;
- і всі вони транслюють одне й те саме ім'я мережі.

Ноутбук на Linux бачить це як одну мережу, але фізично точок доступу декілька, з різним рівнем сигналу. NetworkManager автоматично перестрибує між ними залежно від того, який сигнал здається сильнішим у цю секунду. Кожен такий перестрибок це короткий розрив зв'язку.

Додатково ситуацію погіршує режим енергозбереження Wi-Fi-адаптера, який дозволяє радіомодулю засинати, через що ноутбук пропускає сигнальні маячки (beacons) від точки доступу і вирішує, що потрібно перепідключатися, хоча насправді все було ок.

nmcli -f SSID,BSSID,SIGNAL,CHAN,SECURITY dev wifi list

Якщо одне і те саме ім'я мережі (SSID) з'являється кілька разів з різними BSSID (це фізична MAC-адреса конкретної точки доступу), це джерело проблеми.

Журнал підключень за останню годину:

journalctl -u NetworkManager --since "1 hour ago" | grep -i "disconnect\|deauth\|need-auth"

Цикли типу `disconnected -> scanning -> associating` це і є перескакування між точками доступу.

Налаштування застосовується тільки для цього профілю мережі, на інші збережені Wi-Fi мережі не впливає.

1. Закріпити з'єднання за найсильнішою точкою доступу (зупиняє перепідключання):

nmcli connection modify "ІМ'Я_МЕРЕЖІ" 802-11-wireless.bssid <BSSID_найсильнішої_точки>

(BSSID найсильнішої точки беремо з виводу команди `nmcli dev wifi list` вище, там де найвищий показник SIGNAL).

2. Вимкнути режим енергозбереження Wi-Fi для цієї мережі:

nmcli connection modify "ІМ'Я_МЕРЕЖІ" 802-11-wireless.powersave 2

3. Застосувати зміни:

nmcli connection up "ІМ'Я_МЕРЕЖІ"

Перевірка, що режим енергозбереження справді вимкнено:

ip link   # знайти назву інтерфейсу, наприклад wlp2s0 (не завжди "wlan0")
iw dev <назва_інтерфейсу> get power_save

Має показати `Power save: off`.

Перевірено на двох незалежних мережах із подібною архітектурою (роутер + повторювач сигналу).