Скрипты для системных администраторов *NIX, Полезные скрипты для *NIX |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6820-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Скрипты для системных администраторов *NIX, Полезные скрипты для *NIX |
Pilson |
Dec 24 2010, 16:59
Пост
#1
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
Предлагаю в этой теме делиться различными скриптами для маленьких и не очень нужд, для облегчения жизни себе, любимым
В основном для Bash, PERL, AWK, но также приветствуется и остальное. |
mak_v_ |
Sep 30 2014, 16:09
Пост
#61
|
Репутация: 440 Скорострел Группа: Пользователи Сообщений: 7 453 С нами с: 4-December 11 |
santer, мне бы пременных побольше, побольше....
Сообщение отредактировал mak_v_ - Sep 30 2014, 16:10 |
santer |
Sep 30 2014, 16:44
Пост
#62
|
Репутация: 78 Активист Группа: Пользователи Сообщений: 320 С нами с: 13-April 08 |
|
Fill |
Oct 1 2014, 1:50
Пост
#63
|
Репутация: 39 Дух Группа: Пользователи Сообщений: 180 С нами с: 17-March 06 |
Подскажите пжлст.
Есть конструкция вида ... some code was here... check_proc() { pgrep -u $USER -f $PGREP_STRING >/dev/null } killproc() { pkill -u $USER -f $PGREP_STRING } check_proc if [ $? -eq 0 ]; then echo "$NAME launched, killing process. Wait a bit..." killproc until [ $? -ne 0 ]; do sleep 1 echo "Rechecking..." check_proc done check_proc if [ $? -eq 0 ]; then log_failure_msg "Error stopping $NAME." exit -1 else log_success_msg "Stopped $NAME." fi else log_failure_msg "$NAME is not running or you don't have permission to stop it" fi Нужно после, например, сотой итерации until валить скрипт с ошибкой или пользовать pkill -9 java. Как добавить? |
mak_v_ |
Oct 1 2014, 9:42
Пост
#64
|
Репутация: 440 Скорострел Группа: Пользователи Сообщений: 7 453 С нами с: 4-December 11 |
|
protrue |
Oct 1 2014, 9:49
Пост
#65
|
Репутация: 156 Cтаршой Группа: Пользователи Сообщений: 944 С нами с: 22-April 08 |
Подскажите пжлст. Стандартная конструкция с инит скрипта для SQUID: SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20} SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100} start() { # Check if $SQUID_PIDFILE_DIR exists and if not, lets create it and give squid permissions. if [ ! -d $SQUID_PIDFILE_DIR ]; then mkdir $SQUID_PIDFILE_DIR; chown -R $SQUID_USER.$SQUID_DIR $SQUID_PIDFILE_DIR; fi probe parse=`$SQUID -k parse -f $SQUID_CONF 2>&1` RETVAL=$? if [ $RETVAL -ne 0 ]; then echo -n $"Starting $prog: " echo_failure echo echo "$parse" return 1 fi for adir in $CACHE_SWAP; do if [ ! -d $adir/00 ]; then echo -n "init_cache_dir $adir... " $SQUID -z -F -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1 fi done echo -n $"Starting $prog: " $SQUID $SQUID_OPTS -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then timeout=0; while :; do [ ! -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then RETVAL=1 break fi sleep 1 && echo -n "." timeout=$((timeout+1)) done fi [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID [ $RETVAL -eq 0 ] && echo_success [ $RETVAL -ne 0 ] && echo_failure echo return $RETVAL } stop() { echo -n $"Stopping $prog: " $SQUID -k check -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then $SQUID -k shutdown -f $SQUID_CONF & rm -f /var/lock/subsys/$SQUID timeout=0 while :; do [ -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then echo return 1 fi sleep 2 && echo -n "." timeout=$((timeout+2)) done echo_success echo else echo_failure if [ ! -e /var/lock/subsys/$SQUID ]; then RETVAL=0 fi echo fi rm -rf $SQUID_PIDFILE_DIR/* return $RETVAL } пильнул скрипт если можно так назвать)) #!/bin/bash virsh shutdown vm_id && cp /home/vm-pool/vm_id.img /home/vm_id.img-`date +%d-%B-%Y` && virsh start vm_id и вот нужно сделать паузу после virsh shutdown vm_id, 40сек и после virsh start vm_id отправить мейл, о том что копирование завершено. подскажет кто? Если не настраивать релей локально то можно почитать о .msmtprc .muttrc |
Fill |
Oct 1 2014, 14:06
Пост
#66
|
Репутация: 39 Дух Группа: Пользователи Сообщений: 180 С нами с: 17-March 06 |
protrue, это я понимаю. Не могу врубиться, как в цикл until всунуть две переменные, чтоб цикл вертелся, пока первая не true. Если сунуть что-то типа until : ; то из цикла вылетит сразу.
|
Pilson |
Oct 1 2014, 14:32
Пост
#67
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
protrue, это я понимаю. Не могу врубиться, как в цикл until всунуть две переменные, чтоб цикл вертелся, пока первая не true. Если сунуть что-то типа until : ; то из цикла вылетит сразу. Зачем until для этого? kill -15 PID sleep 10 kill -9 PID по-русски: послали процессу стандартный сигнал завершения. подождали 10 секунд прибили процесс жестко. |
Fill |
Oct 1 2014, 14:50
Пост
#68
|
Репутация: 39 Дух Группа: Пользователи Сообщений: 180 С нами с: 17-March 06 |
Pilson, затем, что инит-скрипт для кучи разных java-процессов и все ведут себя по-разному + там еще есть кусок кода, который срет в почту при ошибке.
|
Pilson |
Oct 1 2014, 15:13
Пост
#69
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
Так может стоит каждый процесс разнести по своим скриптам?
Сообщение отредактировал Pilson - Oct 1 2014, 15:14 |
Fill |
Oct 1 2014, 15:30
Пост
#70
|
Репутация: 39 Дух Группа: Пользователи Сообщений: 180 С нами с: 17-March 06 |
Pilson, не получится в силу определенных ограничений.
PID не используется, используется pkill $PROCESS_NAME Пока пробую обойтись конструкцией вида (( count = 5 )) while [[ $count -ne 0 ]]; do echo "Rechecking... $count tries left" check_proc if [[ $? -eq 0 ]]; then (( count = 1 )) echo "Failed to stop gracefully, killing process..." pkill -9 -u $USER -f $PGREP_STRING fi (( count = $count - 1 )) echo "$? $count" sleep 1 Еще причёсываю. |
Fill |
Oct 1 2014, 17:35
Пост
#71
|
Репутация: 39 Дух Группа: Пользователи Сообщений: 180 С нами с: 17-March 06 |
Причесал
(( count = 60 )) # Make sure it's dead before we return until [ $kill -ne 0 ]; do sleep 1 echo "$count tries left before comfirmed kill, rechecking..." check_proc kill=$? if [[ $count -eq 0 ]]; then echo "Failed to stop $NAME gracefully, trying to kill it with fire..." pkill -9 -u $USER -f $PGREP_STRING rm -f $HOME/RUNNING_PID exit 0 fi (( count = $count - 1 )) done |
Fill |
Oct 1 2014, 18:43
Пост
#72
|
Репутация: 39 Дух Группа: Пользователи Сообщений: 180 С нами с: 17-March 06 |
Еще задачка, но извратная.
Нужен интерактивный запрос параметра (читай - пароля) на выполнение скрипта. Если значение параметра в скрипт не передается - он валится с ошибкой. Если значение передается неправильное - скрипт валится. Если передается правильное значение - оно сверяется с hardcoded и продолжает скрипт. Цель - запретить запуск скрипта для всех, кроме тех, кто знает значение параметра. Варианты с делегированием прав не рассматриваются вообще. |
Pilson |
Oct 2 2014, 12:34
Пост
#73
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
Еще задачка, но извратная. Нужен интерактивный запрос параметра (читай - пароля) на выполнение скрипта. echo -n "Ты кто такой? " read item case "$item" in babaka) echo "Превед, продолжаем..." ;; *) echo "Давай досвидания..." exit 10 ;; esac echo "Продолжение." Только вот мне кажется, что если пользователь может скрипт запустить, то может его и просмотреть. А вот если сделать это через подсчет любого хеша, например md5, то узнать правильный пароль можно только брутфорсом. Пример (пароль тот же - babaka): echo -n "Ты кто такой? " read item if [ $(echo -n $item | md5sum | sed 's/\s.*//g') != "500063f4fd2c78cbcfc34f39a66e7273" ]; then echo "Давай досвидания..." exit 10 fi echo "Превед." Сообщение отредактировал Pilson - Oct 2 2014, 12:47 |
Fill |
Oct 2 2014, 12:49
Пост
#74
|
Репутация: 39 Дух Группа: Пользователи Сообщений: 180 С нами с: 17-March 06 |
Pilson, я думал через сравнение сделать [ $a -eq $b ], где $a берется из консоли, а $b запрятать поглубже.
Нужна просто защита от дурака, чтоб случайно не натравили скрипт на продакшн. |
Pilson |
Oct 2 2014, 12:59
Пост
#75
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
Pilson, я думал через сравнение сделать [ $a -eq $b ], где $a берется из консоли, а $b запрятать поглубже. Нужна просто защита от дурака, чтоб случайно не натравили скрипт на продакшн. А чем тебя md5sum не устраивает в качестве спрятать поглубже? Впрочем что первый вариант, что второй, делают по факту одно и то же - сравнивают что-то с чем-то. Если уж совсем хочется тупо а = б - на: echo -n "Ты кто такой? " read a b="babaka" if [ $a != $b ]; then echo "Давай досвидания..." exit 10 fi echo "Превед." Сообщение отредактировал Pilson - Oct 2 2014, 12:59 |
Fill |
Oct 2 2014, 13:01
Пост
#76
|
Репутация: 39 Дух Группа: Пользователи Сообщений: 180 С нами с: 17-March 06 |
Pilson, устраинвает, пасиба, но это слишком далеко Все равно будет видно введенный параметр, даже если его захэшировать.
|
nerve |
Jan 14 2015, 17:13
Пост
#77
|
Репутация: 282 Постоялец Группа: Пользователи Сообщений: 1 753 С нами с: 5-January 07 |
на работе поставили точку доступа Интертелеком.
на случай падения основного канала есть маленький скриптик, который сидит в кроне и каждые 5 минут проверяет. » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Сообщение отредактировал nerve - Aug 22 2016, 16:58 |
sahasaha |
Jun 2 2015, 14:39
Пост
#78
|
Репутация: 3 Дух Группа: BANNED Сообщений: 143 С нами с: 3-May 15 |
Помогите написать скрипт для удаления из базы данных строки, и последующей перегрузкой.
Грубо говоря идея такова » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Только не пойму сработает ли, если по ID не будет ничего. ЗЫ. И как лучше, так, или всё-так запихнуть в sh Сообщение отредактировал sahasaha - Jun 2 2015, 14:39 |
lega150493 |
Jun 4 2015, 13:26
Пост
#79
|
Репутация: 2 Дух Группа: Пользователи Сообщений: 98 С нами с: 16-August 13 |
Привет всем. Может кто еще в хостинг компании работает.
Скрипт поиска спамеров на cPanel: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Сообщение отредактировал Pilson - Jun 5 2015, 0:01 |
Pilson |
Jun 4 2015, 23:59
Пост
#80
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
То же самое, но короче и менее прожорливей:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Сообщение отредактировал Pilson - Jun 5 2015, 0:01 |
Упрощённая версия | Сейчас: 15th November 2024 - 22:22 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |