எந்த நிரலிலும் பயனுள்ள ஷெல் ஸ்கிரிப்ட்கள்

பாஷ் இது ஒரு கணினி நிரலாகும், இதன் செயல்பாடு ஆர்டர்களை விளக்குவதாகும். இது ஷெல் அடிப்படையில் அமைந்துள்ளது யூனிக்ஸ் மற்றும் திட்டத்திற்காக எழுதப்பட்டது குனு இன் பெரும்பாலான விநியோகங்களில் இயல்புநிலை ஷெல் குனு / லினக்ஸ். இவருடைய பெயர் சுருக்கமாகும் பார்ன்-அகெய்ன் ஷெல் (மற்றொரு ஷெல் பார்ன்), சொற்களில் ஒரு நாடகம் (மறுபிறப்பு என்றால் மறுபிறப்பு என்று பொருள்) பற்றி பார்ன் ஷெல் (ஷ்), இது யூனிக்ஸ் முதல் பெரிய மொழிபெயர்ப்பாளர்களில் ஒருவராக இருந்தது.

டெவலப்பர்களுக்கு மிகவும் பயனுள்ளதாக இருக்கும் சில ஷெல் ஸ்கிரிப்ட்களை இன்று காண்பிக்க உள்ளோம். எந்தவொரு ஷெல்லிலும் பெரும்பாலானவை வேலை செய்கின்றன யூனிக்ஸ், சிலவற்றால் அவை குறிப்பாக செயல்படுத்தப்பட வேண்டும் பாஷ்.

சலுகை இல்லாத பயனர்கள் ஸ்கிரிப்டை இயக்குவதைத் தடுக்கவும்

சில ஸ்கிரிப்ட்கள் நிர்வாக பணிகளைச் செய்கின்றன, எனவே ஸ்கிரிப்டை இயக்க ரூட் பயனர் மட்டுமே விரும்பலாம். அந்த விஷயத்தில் நாம் இதைப் பயன்படுத்தலாம்:

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

இந்த வழக்கில், கோப்பு என்று சரிபார்க்கப்படுகிறது what.lock உள்ளன. அது இருந்தால், ஸ்கிரிப்ட் அதன் பணிகளை செயல்படுத்தாது. அது இல்லாவிட்டால், அது கோப்பை உருவாக்குகிறது, இயக்க வேண்டிய பணிகளை இயக்குகிறது, அதை நீக்குகிறது. ஆனால், இது முற்றிலும் நம்பகமானதல்ல. எங்கள் ஸ்கிரிப்ட் இயங்கும்போது திடீரென மூடப்பட்டால் என்ன நடக்கும்?

அவ்வாறான நிலையில் பூட்டு கோப்பு நீக்கப்படாது, எனவே ஸ்கிரிப்டை மீண்டும் இயக்க இது அனுமதிக்காது. அந்த நிகழ்வுகளை மறைக்க, எங்கள் ஸ்கிரிப்ட் எதிர்பாராத விதமாக முடிவடைந்தால் கட்டளைகளை இயக்க அனுமதிக்கும் பொறி கட்டளையை நாம் பயன்படுத்தலாம். இது மிகவும் மேம்பட்ட பதிப்பாகும், இது ஸ்கிரிப்டின் PID ஐ பூட்டு கோப்பில் செயல்படுத்துகிறது:

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

கட்டளையை கொஞ்சம் நன்றாக புரிந்துகொள்வோம் பொறி. அதன் தொடரியல் அடிப்படையில் இது: பொறி கட்டளை சமிக்ஞை [சமிக்ஞை…]; சமிக்ஞை என்பது நீங்கள் பிடிக்க விரும்பும் முடித்தல் சமிக்ஞையாகும். கிடைக்கக்கூடிய சமிக்ஞைகளின் பட்டியலை நீங்கள் காண விரும்பினால், kill -l கட்டளையை இயக்கலாம். முந்தைய வழக்கில், INT சமிக்ஞைகள் பயன்படுத்தப்பட்டன (Ctrl + c ஆல் தயாரிக்கப்படும் முடிவைப் பிடிக்கிறது), விதிமுறை (கொலை கட்டளையால் உருவாக்கப்பட்டது) மற்றும் வெளியேறு (ஸ்கிரிப்டை இயல்பாக நிறுத்துதல், இயக்க இன்னும் கோடுகள் இல்லாததால் அல்லது வெளியேறும் கட்டளை முழுவதும் வருவதால்).

விருப்பங்கள் மெனு

தொடர்ச்சியான விருப்பங்களைத் தேர்ந்தெடுக்க பயனரை அனுமதிக்கும் மெனுவை உருவாக்க பின்வரும் திட்டத்தைப் பயன்படுத்தலாம்:

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

கட்டுரையின் முடிவு. வெறுமனே சிறந்தது

தொகு: சில காரணங்களால் வெளிவராத இடங்கள் மற்றும் தாவல்களில் நீங்கள் கவனமாக இருக்க வேண்டும்


22 கருத்துகள், உங்களுடையதை விடுங்கள்

உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.

  1.   KZKG ^ காரா அவர் கூறினார்

    ஃபக் அவர்கள் சிறந்த O_O ... பாஷில் நான் செய்யும் எனது சிறிய விஷயங்களுக்கு இது நிறைய உதவும்

  2.   ren434 அவர் கூறினார்

    ஸ்கிரிப்ட்கள் சூப்பர்! என்ன ஒரு பெரிய பங்களிப்பு தீவிரமாக, நான் தேடிக்கொண்டிருந்தேன்.

    சோசலிஸ்ட் கட்சி: மன்றம் கீழே உள்ளது.

    1.    KZKG ^ காரா அவர் கூறினார்

      ஆமாம், மன்றம் ஏற்றப்பட்ட சேவையகம் ஆஃப்லைனில் உள்ளது, ஏன் என்று தெரியவில்லை ... அதைக் கவனித்துக்கொள்ளும் நண்பருக்கு ஒரு மின்னஞ்சல் எழுதினோம், அவர் எங்களுக்கு என்ன பதிலளிப்பார் என்பதைப் பார்க்க

      வாழ்த்துக்கள்.

  3.   ren434 அவர் கூறினார்

    ஓ, இது ஒன்றும் தீவிரமாக இல்லை என்று நம்புகிறோம்.

  4.   இடது கை அவர் கூறினார்

    கோட் நிஞ்ஜாவிலும் அந்த "சாஃப்" சேர்க்கப்பட்டதா? எக்ஸ்.டி

  5.   டார்கான் அவர் கூறினார்

    நான் பாஷின் சக்தியை விரும்புகிறேன் 😉 மற்றும் சி மொழி என்னவென்று அவர்கள் என்னிடம் சொன்னார்கள்…, ஏனெனில் ஷெல் ஸ்கிரிப்ட்டில் பல பழக்கமான கட்டளைகள் உள்ளன.

  6.   கிறிஸ்டோபர் அவர் கூறினார்

    நன்றி, எனக்கு மிகவும் பிடித்திருந்தது

  7.   தேவதூதர் அவர் கூறினார்

    உள்ளீட்டு அளவுருக்களின் சரிபார்ப்பு மிகவும் பயனுள்ளதாக இருக்கும். மெனுக்களை எவ்வாறு உருவாக்குவது என்று எனக்குத் தெரியவில்லை =)

  8.   ஹ்யுகா_நெஜி அவர் கூறினார்

    நன்று…. இப்போது நான் எனது ஸ்கிரிப்ட் சுரோஸ் லாலுக்கு சில "கடினத்தன்மையை" கொடுக்க முடியும்

  9.   அண்டங்காக்கை அவர் கூறினார்

    கோட்நின்ஜாவில் எங்கள் தாழ்மையான பணி சர்வதேச லினக்ஸ் சமூகத்திற்கு எவ்வாறு சேவை செய்கிறது என்பதைப் பார்க்கும்போது மிகுந்த மகிழ்ச்சி

    1.    KZKG ^ காரா அவர் கூறினார்

      தெளிவு! 🙂
      எல்லாமே ஒன்றாக உதவுவதும் பங்களிப்பதும், தீப்பிழம்புகளை உருவாக்குவதும் அல்லவா? 😉

  10.   டியாகோ அவர் கூறினார்

    நீங்கள் அறிய விரும்பும் செயல்முறையைத் தேர்ந்தெடுப்பதற்கான விருப்பத்தை வைப்பதன் மூலம் இயங்கும் செயல்முறை ஸ்கிரிப்டை சிறிது மேம்படுத்தலாம், இது இதுபோன்றதாக இருக்கும்:

    #! / பின் / பாஷ்
    எதிரொலி "ஒரு சேவையைத் தேர்வுசெய்க"
    SERVICE ஐப் படிக்கவும்
    # SERVICE = 'mysql'
    ps கோடாரி என்றால் | grep -v grep | grep $ SERVICE> / dev / null
    பிறகு
    எதிரொலி "ER சேவை சேவை இயங்குகிறது"
    வேறு
    எதிரொலி "ER சேவை சேவை நிறுத்தப்பட்டது"

  11.   ஜுவா கார்லோஸ் சி அவர் கூறினார்

    என்னிடம் மிகவும் நடைமுறை ஸ்கிரிப்ட்கள் உள்ளன, ஆனால் என்னிடம் உள்ள ஒரு சிக்கலைத் தீர்க்க ஒரு சிறப்பு ஸ்கிரிப்டைத் தேடுகிறேன், இது பின்வருமாறு: நிறுவனத்தில் எங்களிடம் ஒரு பயன்பாட்டு சேவையகம் உள்ளது, உள் பயனர்கள் அதை டெல்நெட் மூலம் அணுகலாம், மேலும் ஒரு சிறப்பு பயன்பாட்டை இயக்கலாம் வரம்புக்குட்பட்ட உரிமங்களுக்காக, பயனர்கள் 2 அல்லது அதற்கு மேற்பட்ட உரிமங்களை எடுத்துக்கொள்வதற்கு ஒன்றுக்கு மேற்பட்ட டெல்நெட்களை துஷ்பிரயோகம் செய்கிறார்கள் மற்றும் திறக்கிறார்கள், எனவே நான் நினைத்த ஸ்கிரிப்ட் என்னவென்றால், சில முறையால், எந்த டெல்நெட் செயல்முறை 2 மணி நேரத்திற்கும் மேலாக செயலற்றதாக இருக்கிறதா என்று சோதித்துப் பாருங்கள் pid, நீங்கள் எனக்கு உதவ முடியுமா?

    1.    டியாகோ அவர் கூறினார்

      பின்வரும் நிரலை நிறுவவும்

      தன்னியக்கத்தை நிறுவுதல்

      உங்களிடம் /etc/autolog.conf இல் உள்ளமைவு கோப்பு உள்ளது

  12.   டிட்டோ அவர் கூறினார்

    அருமை, நண்பரே, நான் உங்களிடம் ஒரு கேள்வியைக் கேட்கலாம், எனக்கு விருப்பங்களுடன் ஒரு ஷெல் ஸ்கிரிப்ட் தேவை, நான் அதை உங்களுடையதை அடிப்படையாகக் கொண்டுள்ளேன், அது நன்றாக வேலை செய்கிறது, ஆனால் விருப்பங்களில் ஒன்று மின்னஞ்சல்களை அனுப்ப வேண்டும் (போஸ்டிஃபிக்ஸ் பயன்படுத்தி), இது பொருள், உரை கேட்கிறது மற்றும் திரையில் பெறுநர்கள் மற்றும் அது சரியாக அனுப்பப்பட்டதா என்பதை அனுப்பவும் சரிபார்க்கவும், அஞ்சல் மூலம் நான் வரிசையைக் காணலாம் மற்றும் அனுப்பப்பட்டதா என்று பார்க்க முடியும், ஆனால் பொருள், உரை மற்றும் பெறுநர்களைப் பெற்ற மாறிகளைப் பயன்படுத்தி கட்டளை மூலம் அஞ்சல்களை எவ்வாறு அனுப்புவது? ? 🙁

    1.    KZKG ^ காரா அவர் கூறினார்

      Escríbeme a mi email (kzkggaara[at]desdelinux[dot]net) para hablar con más calma, te ayudo con mucho gusto 🙂

      1.    டிட்டோ அவர் கூறினார்

        பெரிய நன்றி நண்பரே, நீங்கள் கடந்துவிட்டீர்கள்!

  13.   இன்னா அவர் கூறினார்

    வணக்கம் நல்லது.
    எனக்கு ஒரு மெனு தேவைப்படும்போது இந்த சிறந்த எடுத்துக்காட்டுகளை நான் கண்டிருக்கிறேன்.
    நான் இதைத் தொடங்கினேன், அதை வேலை செய்ய முடியாது (முந்தைய படிகளில்).
    என்னிடம் 247 கூறுகள் உள்ளன, அவை வெவ்வேறு பிராந்திய களங்களைக் குறிக்கின்றன.
    எனக்கு தேவையானது நாட்டைத் தேர்ந்தெடுப்பதற்கான மெனு:
    #! / பின் / பாஷ்
    தெளிவான
    போது:
    do
    எதிரொலி try முயற்சிக்க நாட்டைத் தேர்வுசெய்க »
    எதிரொலி «1. ஆப்கானிஸ்தான் (AF) »
    எதிரொலி «2. அல்பேனியா (AL) »
    எதிரொலி «3. ஜெர்மனி (DE) »
    எதிரொலி «5. அங்கோலா (AO) »
    எதிரொலி «6. அங்குவிலா (AI) »
    .. மற்றும் 247 வரை தொடர்கிறது

    echo -n "ஒரு விருப்பத்தைத் தேர்ந்தெடுக்கவும் [1 - 247]"
    வாசிப்பு விருப்பம்
    வழக்கு $ விருப்பம்
    1) எதிரொலி "இது நீங்கள்:"; ஹூமி ;;
    2) எதிரொலி "உங்களிடம் இது உள்ளது"; df ;;
    3) எதிரொலி ""; uname -r ;;
    4) எதிரொலி "பை"; வெளியேறு 1 ;;
    5) எதிரொலி "இது நீங்கள்:"; ஹூமி ;;
    6) எதிரொலி "இது நீங்கள்:"; ஹூமி ;;
    … மேலும் 247 வரை தொடர்கிறது
    *) எதிரொலி $ $ opc என்பது தவறான விருப்பமாகும். இது மிகவும் கடினம்? ";
    எதிரொலி "தொடர ஒரு விசையை அழுத்தவும் ...";
    படிக்க foo ;;
    அந்த சி
    முடிந்ததாகக்

    நடத்தை பின்வருமாறு:
    4 ஐத் தவிர வேறு எந்த விருப்பமும் வெளியீடாகும், உள்ளிடப்பட்ட எண்ணை நீக்கி புதிய எண்ணுக்காக காத்திருக்கிறது.
    4 க்குள் நுழைகிறது.
    நான் 4 இன் குறியீட்டை வேறு எந்த வரியிலும் வைத்தால் (150 என்று சொல்லலாம்) இது பிரச்சினைகள் இல்லாமல் சமமாக வெளிவருகிறது.
    குறியீட்டை இந்த வடிவத்தில் வைக்க முயற்சித்தேன்:
    151) எதிரொலி "இது நீங்கள்:";
    நான் யார் ;;
    அதே முடிவுடன்.
    இவ்வளவு நீண்ட மெனுவுக்கு சிறந்த விருப்பங்கள் இருக்கிறதா என்று எனக்கு ஆச்சரியமாக இருக்கிறது, நிச்சயமாக நானும் தவறு செய்கிறேன்.
    ஒரு உதவி மிகவும் பாராட்டப்படும், நன்றி

  14.   ரவுல் மட்டுமே அவர் கூறினார்

    சிறந்தது ... ஷெல்லுக்குள் செல்வது மிகவும் நல்லது என்று நினைக்கிறேன்

    நன்றி

  15.   அடையாளங்கள் அவர் கூறினார்

    அருமை, ஏய் ஒரு கோப்புடன் எனது பாஷ் வேலை செய்வது எப்படி
    உதாரணம்:

    upload.sh fotodelavecina.jpg

    எனது பாஷ் ஸ்கிரிப்ட் "upload.sh" எனது ftp க்கான அணுகல் தகவலைக் கொண்டுள்ளது என்று நினைத்துக்கொண்டேன்

    வாழ்த்துக்கள் மற்றும் நன்றி

  16.   நெட்சுலோ என்டிஎக்ஸ் அவர் கூறினார்

    நல்ல மனிதரே, எல்லா ஸ்கிரிப்டுகளுக்கும் மிக்க நன்றி, நான் ஒரு சென்டோஸ் சேவையகத்தை அமைத்துள்ளேன், இந்த வார்ப்புருக்கள் எனக்கு எவ்வளவு நன்றாக வந்துள்ளன என்பது உங்களுக்குத் தெரியாது, தயவுசெய்து என்னை மின்னஞ்சல் மூலம் தொடர்பு கொள்ளவும். நான் உங்களுக்கு ஏதாவது முன்மொழிய விரும்புகிறேன்

  17.   கேப்ரியல் பால்டெராமோஸ் அவர் கூறினார்

    மெனுவை உருவாக்கும் போது நீங்கள் ஏன் படிக்க foo ஐப் பயன்படுத்துகிறீர்கள்? எனக்கு விரைவான பதில்கள் தேவை