Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 5225-й день

Тут може бути Ваша реклама

 Скрипты для системных администраторов *NIX, Полезные скрипты для *NIX

Pilson
Dec 24 2010, 16:59
  
Пост #1



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


Предлагаю в этой теме делиться различными скриптами для маленьких и не очень нужд, для облегчения жизни себе, любимым drinks.gif
В основном для Bash, PERL, AWK, но также приветствуется и остальное.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
5 Страницы  « < 2 3 4 5 >  
Reply to this topicStart new topic
Ответов(60 - 79)
mak_v_
Sep 30 2014, 16:09
  
Пост #61



Репутация:   430  
Скорострел
*****

Группа: Пользователи
Сообщений: 6 995
С нами с: 4-December 11


santer, мне бы пременных побольше, побольше.... girl_cray2.gif

Сообщение отредактировал mak_v_ - Sep 30 2014, 16:10
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
santer
Sep 30 2014, 16:44
  
Пост #62



Репутация:   78  
Активист
*

Группа: Пользователи
Сообщений: 317
С нами с: 13-April 08
Меценат


(mak_v_ @ Sep 30 2014, 17:09) Перейти к цитате

santer, мне бы пременных побольше, побольше.... girl_cray2.gif

Простите, это просто было под рукой d.gif
echo "This is the message body" | mail -s "This is the subject" mail@mail
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Fill
Oct 1 2014, 1:50
  
Пост #63



Репутация:   38  
Дух


Группа: Пользователи
Сообщений: 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.
Как добавить?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mak_v_
Oct 1 2014, 9:42
  
Пост #64



Репутация:   430  
Скорострел
*****

Группа: Пользователи
Сообщений: 6 995
С нами с: 4-December 11


(Fill @ Oct 1 2014, 2:50) Перейти к цитате

Нужно после, например, сотой итерации until валить скрипт с ошибкой или пользовать pkill -9 java.
Как добавить?

Вставить в конец цикла счетчик
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
protrue
Oct 1 2014, 9:49
  
Пост #65



Репутация:   156  
Cтаршой
**

Группа: Пользователи
Сообщений: 944
С нами с: 22-April 08


(Fill @ Oct 1 2014, 1:50) Перейти к цитате

Подскажите пжлст.


Стандартная конструкция с инит скрипта для 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
}


(artem.ultra @ Sep 30 2014, 11:50) Перейти к цитате

пильнул скрипт smile.gif если можно так назвать))
#!/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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Fill
Oct 1 2014, 14:06
  
Пост #66



Репутация:   38  
Дух


Группа: Пользователи
Сообщений: 180
С нами с: 17-March 06


protrue, это я понимаю. Не могу врубиться, как в цикл until всунуть две переменные, чтоб цикл вертелся, пока первая не true. Если сунуть что-то типа until : ; то из цикла вылетит сразу.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pilson
Oct 1 2014, 14:32
  
Пост #67



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


(Fill @ Oct 1 2014, 15:06) Перейти к цитате

protrue, это я понимаю. Не могу врубиться, как в цикл until всунуть две переменные, чтоб цикл вертелся, пока первая не true. Если сунуть что-то типа until : ; то из цикла вылетит сразу.

Зачем until для этого?
kill -15 PID
sleep 10
kill -9 PID

по-русски:
послали процессу стандартный сигнал завершения.
подождали 10 секунд
прибили процесс жестко.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Fill
Oct 1 2014, 14:50
  
Пост #68



Репутация:   38  
Дух


Группа: Пользователи
Сообщений: 180
С нами с: 17-March 06


Pilson, затем, что инит-скрипт для кучи разных java-процессов и все ведут себя по-разному + там еще есть кусок кода, который срет в почту при ошибке.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pilson
Oct 1 2014, 15:13
  
Пост #69



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


Так может стоит каждый процесс разнести по своим скриптам?

Сообщение отредактировал Pilson - Oct 1 2014, 15:14
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Fill
Oct 1 2014, 15:30
  
Пост #70



Репутация:   38  
Дух


Группа: Пользователи
Сообщений: 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

Еще причёсываю.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Fill
Oct 1 2014, 17:35
  
Пост #71



Репутация:   38  
Дух


Группа: Пользователи
Сообщений: 180
С нами с: 17-March 06


Причесал d.gif
(( 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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Fill
Oct 1 2014, 18:43
  
Пост #72



Репутация:   38  
Дух


Группа: Пользователи
Сообщений: 180
С нами с: 17-March 06


Еще задачка, но извратная.
Нужен интерактивный запрос параметра (читай - пароля) на выполнение скрипта. Если значение параметра в скрипт не передается - он валится с ошибкой. Если значение передается неправильное - скрипт валится. Если передается правильное значение - оно сверяется с hardcoded и продолжает скрипт.
Цель - запретить запуск скрипта для всех, кроме тех, кто знает значение параметра.
Варианты с делегированием прав не рассматриваются вообще.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pilson
Oct 2 2014, 12:34
  
Пост #73



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


(Fill @ Oct 1 2014, 19:43) Перейти к цитате

Еще задачка, но извратная.
Нужен интерактивный запрос параметра (читай - пароля) на выполнение скрипта.



echo -n "Ты кто такой? "
read item
case "$item" in
    babaka) echo "Превед, продолжаем..."
;;

    *) echo "Давай досвидания..."
        exit 10
;;

esac

echo "Продолжение."

biggrin.gif

Только вот мне кажется, что если пользователь может скрипт запустить, то может его и просмотреть.

А вот если сделать это через подсчет любого хеша, например 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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Fill
Oct 2 2014, 12:49
  
Пост #74



Репутация:   38  
Дух


Группа: Пользователи
Сообщений: 180
С нами с: 17-March 06


Pilson, я думал через сравнение сделать [ $a -eq $b ], где $a берется из консоли, а $b запрятать поглубже.
Нужна просто защита от дурака, чтоб случайно не натравили скрипт на продакшн.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pilson
Oct 2 2014, 12:59
  
Пост #75



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


(Fill @ Oct 2 2014, 13:49) Перейти к цитате

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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Fill
Oct 2 2014, 13:01
  
Пост #76



Репутация:   38  
Дух


Группа: Пользователи
Сообщений: 180
С нами с: 17-March 06


Pilson, устраинвает, пасиба, но это слишком далеко d.gif Все равно будет видно введенный параметр, даже если его захэшировать.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
nerve
Jan 14 2015, 17:13
  
Пост #77



Репутация:   280  
Постоялец
***

Группа: Пользователи
Сообщений: 1 741
С нами с: 5-January 07


на работе поставили точку доступа Интертелеком.
на случай падения основного канала есть маленький скриптик, который сидит в кроне и каждые 5 минут проверяет.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


Сообщение отредактировал nerve - Aug 22 2016, 16:58
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
sahasaha
Jun 2 2015, 14:39
  
Пост #78



Репутация:   3  
Дух


Группа: BANNED
Сообщений: 143
С нами с: 3-May 15


Помогите написать скрипт для удаления из базы данных строки, и последующей перегрузкой.
Грубо говоря идея такова

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


Только не пойму сработает ли, если по ID не будет ничего.

ЗЫ. И как лучше, так, или всё-так запихнуть в sh

Сообщение отредактировал sahasaha - Jun 2 2015, 14:39
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
lega150493
Jun 4 2015, 13:26
  
Пост #79



Репутация:   1  
Дух


Группа: Пользователи
Сообщений: 92
С нами с: 16-August 13


Привет всем. Может кто еще в хостинг компании работает.
Скрипт поиска спамеров на cPanel:

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


Сообщение отредактировал Pilson - Jun 5 2015, 0:01
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pilson
Jun 4 2015, 23:59
  
Пост #80



Репутация:   379  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 759
С нами с: 23-May 09


То же самое, но короче и менее прожорливей:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


Сообщение отредактировал Pilson - Jun 5 2015, 0:01
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

5 Страницы  « < 2 3 4 5 >
Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 4th July 2020 - 23:53
Сайт не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами и мы удалим её. Файлы для обмена предоставлены пользователями сайта.