Nyttige shell-scripts i ethvert program

Bash Det er et computerprogram, hvis funktion er at fortolke ordrer. Det er baseret på skal af Unix og blev skrevet til projektet GNU er standardskallen i de fleste distributioner af GNU / Linux. Hans navn er et akronym for Bourne-Again Shell (en anden shell bourne), laver et ordspil (genfødt betyder genfødsel) om Bourne skal (sh), som var en af ​​de første store tolke af Unix.

I dag skal vi vise nogle shell-scripts, der kan være meget nyttige for udviklere. De fleste arbejder i enhver skal Unix, selvom nogle kræver, at de udføres specifikt af Bash.

Forhindre ikke-privilegerede brugere i at køre scriptet

Nogle scripts udfører administrative opgaver, så vi ønsker måske kun, at rodbrugeren kører scriptet. I så fald kan vi bruge noget som dette:

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

Tillad kun udførelse af script til en bestemt bruger

I lighed med koden ovenfor vil vi måske kun have en bestemt bruger til at køre scriptet. Vi gør det således:

#!/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

Kontroller, at en tjeneste / proces kører

Hvis vi vil vide, om der er processer for en tjeneste eller et program, der kører, kan vi bruge dette script (i dette tilfælde bekræfter det, at dæmonen af Apache løber):

#!/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

Opret en låsefil

Nogle gange skal vi sørge for, at scriptet ikke kører to eller flere gange samtidigt. Til dette kan vi bruge låsefilerne. Dette er en simpel version af et script, der giver os mulighed for at gøre dette:

#!/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

I dette tilfælde er det bekræftet, at filen uanset hvad. lås eksisterer. Hvis det findes, udfører scriptet IKKE sine opgaver. Hvis den ikke findes, opretter den filen, kører de opgaver, den har brug for, og fjerner den. Men dette er ikke helt pålideligt. Hvad ville der ske, hvis det lukkes brat, mens vores script kører?

I så fald vil låsefilen ikke blive slettet, og derfor tillader det os ikke at køre scriptet igen. For at dække disse tilfælde kunne vi gøre brug af trap-kommandoen, der giver os mulighed for at udføre kommandoer, hvis vores script ender uventet. Dette er en mere avanceret version, der også gemmer PID for scriptet, der udfører det i låsefilen:

#!/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

Lad os forstå kommandoen lidt bedre fælde. Dens syntaks er grundlæggende dette: fældekommandosignal [signal ...]; hvor signal er det afsluttende signal, du vil fange. Hvis du vil se en liste over tilgængelige signaler, kan du køre kommandoen kill -l. I det foregående tilfælde blev INT-signalerne brugt (fanger opsigelsen produceret af en Ctrl + c), VILKÅR (opsigelse produceret af kill-kommando) og EXIT (normal afslutning af et script, enten fordi der ikke er flere linjer at udføre, eller fordi det kommer på tværs af kommandoen exit).

Indstillingsmenu

For at lave en menu, hvor vi tillader brugeren at vælge en række muligheder, kan vi bruge følgende skema:

#!/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

Bed om bekræftelse, før du kører et script

Nogle gange er det nyttigt at få brugeren til at bekræfte udførelsen af ​​en række udsagn, det vil sige den typiske meddelelse, der beder brugeren om at skrive ja eller nej. Vi kan gøre dette sådan:

#!/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"

Slut på artiklen. Simpelthen fantastisk 

Redigere: Du skal være forsigtig med mellemrum og faner, som af en eller anden grund ikke kommer ud ¬¬


Tilføj som foretrukken kilde i Google