Корисне скрипте љуске у било ком програму

Басх То је рачунарски програм чија је функција тумачење налога. Заснован је на љусци од уник и написан је за пројекат ГНУ- будући да је подразумевана љуска у већини дистрибуција ГНУ / Линук. Његово име је скраћеница за Боурне-Агаин Схелл (још једна шкољка је пропала), правећи игру речи (поновно рођење значи поновно рођење) о њему Борнова шкољка (сх), који је био један од првих главних тумача Уника.

Данас ћемо показати неке скрипте љуске које могу бити врло корисне за програмере. Већина ради у било којој љусци уник, иако неки захтевају да их посебно изврши Басх.

Спречите непривилеговане кориснике да покрећу скрипту

Неке скрипте извршавају административне задатке, па бисмо можда желели да само роот корисник покрене скрипту. У том случају можемо користити нешто попут овог:

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Este script debe ser ejecutado por el usuario root" 1>&2
exit 1
fi

Дозволи извршавање скрипте само одређеном кориснику

Слично коду изнад, можда бисмо желели да само одређени корисник покрене скрипту. Ми то радимо тако:

#!/bin/bash
AUTHORIZED_USER="usuario_permitido"
if [ $USER != $AUTHORIZED_USER ]; then
echo "Este script debe ser ejecutado por el usuario $AUTHORIZED_USER" 1>&2
exit 1
fi

Проверите да ли је сервис / процес покренут

Ако желимо да знамо да ли постоје процеси било које услуге или програма који се изводе, могли бисмо да користимо ову скрипту (у овом случају потврђује да је демон апацхе трчи):

#!/bin/sh
SERVICE='httpd'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "El servicio $SERVICE esta ejecutandose"
else
echo "Chanfle! El servicio $SERVICE esta detenido"
fi

Направите датотеку закључавања

Понекад морамо бити сигурни да се скрипта не покреће два или више пута истовремено. За ово можемо користити датотеке закључавања. Ово је једноставна верзија скрипте која нам омогућава да то урадимо:

#!/bin/bash
lockfile=/var/lock/loquesea.lock
if [ ! -e $lockfile ]; then
touch $lockfile
echo "hago muchas cosas importantes aqui"
rm $lockfile
else
echo "ya hay otro proceso corriendo"
fi

У овом случају се проверава да ли је датотека шта год.закључај постоје. У случају да постоји, скрипта НЕ извршава своје задатке. Ако не постоји, креира датотеку, покреће задатке потребне за покретање и уклања је. Али, ово није у потпуности поуздано. Шта би се догодило ако се наша скрипта нагло затвори док је покренута?

У том случају датотека закључавања не би била избрисана и стога нам не би дозволила да поново покренемо скрипту. Да бисмо покрили те случајеве, могли бисмо се користити командом трап која нам омогућава извршавање наредби у случају да се наша скрипта неочекивано заврши. Ово је напреднија верзија која такође чува ПИД скрипте која га извршава у датотеци закључавања:

#!/bin/bash
lockfile=/var/lock/loquesea.lock
if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null;
then
trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
echo "hago muchas cosas aqui tranquilamente"
rm -f "$lockfile"
trap - INT TERM EXIT
else
echo "Ya hay otro proceso de este script ejecutandose"
echo "corriendo con el PID: $(cat $lockfile)"
fi

Хајде да мало боље разумемо команду замка. Његова синтакса је у основи следећа: сигнал трап цомманд [сигнал…]; где је сигнал сигнал раскида који желите да ухватите. Ако желите да видите листу доступних сигнала, можете покренути команду килл -л. За претходни случај коришћени су ИНТ сигнали (снима завршетак произведен Цтрл + ц), ТЕРМИН (раскид произведен наредбом килл) и ЕКСИТ (нормално прекидање скрипте, било зато што више нема линија за покретање, било зато што наилази на наредбу екит).

Изборник опција

Да бисмо направили мени у коме допуштамо кориснику да одабере низ опција, можемо користити следећу шему:

#!/bin/bash
clear
while :
do
echo " Escoja una opcion "
echo "1. quien soy?"
echo "2. cuanto espacio tengo"
echo "3. que es esto?"
echo "4. Salir"
echo -n "Seleccione una opcion [1 - 4]"
read opcion
case $opcion in
1) echo "este eres:";
whoami;;
2) echo "tienes esto";
df;;
3) uname -r;;
4) echo "chao";
exit 1;;
*) echo "$opc es una opcion invalida. Es tan dificil?";
echo "Presiona una tecla para continuar...";
read foo;;
esac
done

Затражите потврду пре покретања скрипте

Понекад је корисно да корисник потврди извршење серије извештаја, то јест типичне поруке која од корисника тражи да унесе да или не. То можемо учинити овако:

#!/bin/bash
while true; do
echo
read -p "esta seguro de hacer lo que sea que vaya a hacer " yn
case $yn in
yes ) break;;
no ) exit;;
* ) echo "por favor responda yes o no";;
esac
done
echo "si se ejecuta esto es que aceptaste"

Крај чланка. Једноставно одлично 

Уредити: Морате бити опрезни са размацима и картицама који из неког разлога не излазе


Додај као жељени извор на Гуглу