Re: bash скрипти
Таке враження, що не переходить у вказану теку. А спробуйте cd зробити без sudo.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → *nix → bash скрипти
Таке враження, що не переходить у вказану теку. А спробуйте cd зробити без sudo.
Дякую, на іншому ресурсі мені пояснили що проблема в sudo - в кронтабі під рутом такої проблеми нема.
Ось і знайшов. Суть скрипта у тому, що він завантажує усі шрифти з сайту 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.?
Ван-лайнер для видалення старих версій програм, що були встановлені через 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Запис 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Не зовсім bash, швидше команда в терміналі для ресету налаштувань монітора (не знаю куди краще запостити)
xrandr -s 1600x900Блокуємо вхідний трафік від зловмисника який спамить веб-форми:
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/
Моніторимо використання ресурсів в розрізі окремих процесів із "білим списком", надсилаємо алерт при перевищенні порогу.
#!/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.
Заміна запису про автора всіх комітів в 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
'Заміна запису про автора всіх комітів в 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"
'Скачування даних з віддаленого інстансу в поточну папку через ssh - весь вміст /home/remote_user, зберігаючи структуру та часові мітки, дозволяючи відновлення, ігноруючи овнера і права доступу
rsync -aH --no-owner --no-group --no-perms --partial --progress remote_user@remote_host:/home/remote_user/ ./