BASH: скрипт проверки свободного места v2

Автор: | 02/10/2013
 

terminalВ дополнение к скрипту BASH: скрипт проверки свободного места – его другая версия.

Задача – перед выполнением какой-то задачи (в примере это просто вывести фразу “Doing something…“) в скрипте echo.sh – сначала выполнить проверку места, после чего решать – продолжать выполнение
или прервать.

Содержимое echo.sh:

#!/bin/bash

# выдаём запрос Y/n на выполнение скрипта проверки места
read -r -p "Do you want run check_space script first? [Y/n] " response

# читаем полученный ответ
case $response in

# если Y, y, Yes - запускаем скрипт check_space.sh
[yY][eE][sS]|[yY])
./check_space.sh
;;

# если любое другое значение - просто продолжаем выполнение echo.sh
*)
echo "Let's start..."
;;
esac

# получаем код выхода скрипта check_space.sh
result=$?

echo $result

# если ответ не 0 - прерываем выполнение
if [ $result != 0 ]
then
echo "Exiting"
exit
else
# если получили 0 - продолжаем выполнение
echo "Proceeding"
fi

echo "Doing something..."

Содержимое check_space.sh:

#!/bin/bash
# задаём переменную, в которой хранится имеющееся свободное место
FREE=`df -h $HOME | grep dev | awk '{print $4}' | sed '{s/.$//;}'`
# задаём минимально допустимое место, если меньше - будет Alert
MIN=500

echo "We have $FREE gigabytes free space in $HOME"

if [ $FREE -lt $MIN ]
then
echo $FREE
echo "Huston, we have a problem!"

# на тестовой машине bash v4 - сначала писалось на ней, можно использовать
#### For bash 4*
#read -r -p "Are you sure to proceed releasing APP? [Y/n] " response
#if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
#then
#    echo "Let's do it!"
#else
#    echo "Exiting setup"
#    exit 1
#fi

# а на prodaction-машине оказался bash 3.1 - пришлось делать иначе
#### For bash v3.1
# если свободно места меньше, чем должно быть - запрашиваем подтверждение выполнения echo.sh
read -r -p "Are you sure to proceed? [Y/n]  " response
# читаем полученный ответ
case $response in
[yY][eE][sS]|[yY])
echo "Let's do it!"
;;
*)
echo "Exiting setup"
exit 1
;;
esac

# если с местом всё в порядке - ничего не спрашивем, выдаём код 0 и продолжаем выполнение echo.sh
else
echo "Good!"
fi

Примеры работы:

$ ./echo.sh
Do you want run check_space script first? [Y/n] y // Запрашиваем подтверждение запуска скрипта проверки места;
We have 172 gigabytes free space in /home/setevoy
172
Huston, we have a problem!
Are you sure to proceed? [Y/n]  y // запрашиваем подтверждение процесса выполнения echo.sh, т.к. проверка места выдала сообщение о проблеме;
Let's do it!
0
Proceeding
Doing something...
$ ./echo.sh
Do you want run check_space script first? [Y/n] y // Подтверждаем запуск скрипта проверки места;
We have 172 gigabytes free space in /home/setevoy
172
Huston, we have a problem!
Are you sure to proceed releasing APP? [Y/n]  n // отказываемся выполнять дальше echo.sh
Exiting setup
1
Exiting
$ ./echo.sh
Do you want run check_space script first? [Y/n] n // отказываемся запускать проверку места, продолжаем выполнение echo.sh;
Let's start...
0
Proceeding
Doing something...