যে কোনও প্রোগ্রামে দরকারী শেল স্ক্রিপ্ট

সজোরে আঘাত এটি এমন একটি কম্পিউটার প্রোগ্রাম যা এর ক্রিয়াকলাপটি অর্ডারগুলি ব্যাখ্যা করে। এটি এর শেলের উপর ভিত্তি করে ইউনিক্স এবং প্রকল্পের জন্য লিখিত ছিল গনুহ এর বেশিরভাগ বিতরণে ডিফল্ট শেল হচ্ছে জিএনইউ / লিনাক্স। তার নাম একটি সংক্ষিপ্ত নাম বোর্ন-অইগেন শেল (অন্য শেল বোর্ন), কথায় একটি নাটক তৈরি (আবার জন্মের অর্থ পুনর্জন্ম) সম্পর্কে বোর্ন শেল (এসএইচ)যা ইউনিক্সের অন্যতম প্রধান দোভাষী ছিল।

আজ আমরা এমন কয়েকটি শেল স্ক্রিপ্ট প্রদর্শন করতে চলেছি যা বিকাশকারীদের জন্য খুব কার্যকর হতে পারে। যে কোনও শেলের বেশিরভাগ কাজ ইউনিক্সযদিও কারও কারও প্রয়োজন যে তারা নির্দিষ্টভাবে মৃত্যুদণ্ড কার্যকর করে সজোরে আঘাত.

স্ক্রিপ্ট চালানো থেকে অননুমোদিত ব্যবহারকারীদের বাধা দিন

কিছু স্ক্রিপ্ট প্রশাসনিক কাজ সম্পাদন করে তাই আমরা কেবল স্ক্রিপ্টটি চালানোর জন্য মূল ব্যবহারকারীকে চাই। সেক্ষেত্রে আমরা এরকম কিছু ব্যবহার করতে পারি:

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

স্ক্রিপ্ট কার্যকর করার অনুমতি কেবল একটি নির্দিষ্ট ব্যবহারকারীর কাছে

উপরের কোডের মতো, আমরা স্ক্রিপ্টটি চালানোর জন্য কেবল একটি নির্দিষ্ট ব্যবহারকারী চাই want আমরা এটি তাই করি:

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

কমান্ডটি আরও ভালভাবে বুঝতে পারি ফাঁদ। এর বাক্য গঠনটি মূলত এটি: ট্র্যাপ কমান্ড সংকেত [সংকেত…]; যেখানে সংকেত হ'ল সমাপ্তি সংকেত যা আপনি ধরতে চান। আপনি যদি উপলভ্য সিগন্যালের একটি তালিকা দেখতে চান তবে আপনি কিল-ল কমান্ড চালাতে পারেন। পূর্ববর্তী ক্ষেত্রে, আইএনটি সংকেত ব্যবহৃত হয়েছিল (একটি Ctrl + সি দ্বারা উত্পাদিত সমাপ্তি ক্যাপচার), শর্ত (হত্যার আদেশ দ্বারা উত্পাদনের সমাপ্তি) এবং প্রস্থান করুন (কোনও স্ক্রিপ্টের সাধারণ সমাপ্তি, হয় চালানোর জন্য আর কোনও লাইন নেই বলেই বা এটি প্রস্থান কমান্ড জুড়ে আসে).

বিকল্প মেনু

একটি মেনু তৈরি করতে যেখানে আমরা ব্যবহারকারীকে কয়েকটি বিকল্পের সিলেক্ট করার অনুমতি দিই আমরা নিম্নলিখিত স্কিমটি ব্যবহার করতে পারি:

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

নিবন্ধের শেষ। কেবল দুর্দান্ত 😀

সম্পাদকীয়: আপনাকে স্পেস এবং ট্যাবগুলি সম্পর্কে সতর্কতা অবলম্বন করতে হবে, যা কিছু কারণে coming বেরিয়ে আসছে না ¬¬


আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়বদ্ধ: মিগুয়েল অ্যাঞ্জেল গাটান
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।

  1.   কেজেডিজি ^ গারা তিনি বলেন

    তারা খুব দুর্দান্ত হও ... এগুলি আমার বাশ Bash এ করা আমার ছোট জিনিসগুলিতে অনেক সহায়তা করবে 😀

  2.   ren434 তিনি বলেন

    স্ক্রিপ্টগুলি দুর্দান্ত! গম্ভীরভাবে কী দুর্দান্ত অবদান, আমি যা খুঁজছিলাম।

    পিএস: ফোরাম ডাউন আছে।

    1.    কেজেডিজি ^ গারা তিনি বলেন

      হ্যাঁ, ফোরামটি যে সার্ভারটি মাউন্ট করা হয়েছে তা অফলাইনে রয়েছে, কেন তার কোনও ধারণা নেই ... আমরা দায়িত্বে থাকা বন্ধুটিকে একটি ইমেল লিখেছিলাম, সে আমাদের কী প্রতিক্রিয়া জানায় 🙂

      গ্রিটিংস।

  3.   ren434 তিনি বলেন

    আহ্, আসুন আশা করি এটি গুরুতর কিছু নয়।

  4.   Southpaw তিনি বলেন

    সেই "তুষ" কি কোড নিনজাতে অন্তর্ভুক্ত ছিল? এক্সডি

  5.   তারেগন তিনি বলেন

    আমি বাশ এর শক্তি পছন্দ করি 😉 এবং তারা আমাকে সি ভাষার জন্য কী ছিল তা বলেছিল…, কারণ শেল স্ক্রিপ্টে অনেকগুলি পরিচিত কমান্ড রয়েছে।

  6.   ক্রিস্টোফার তিনি বলেন

    আপনাকে ধন্যবাদ, আমি সত্যিই পছন্দ করেছি

  7.   দেবদূত তিনি বলেন

    ইনপুট পরামিতিগুলির বৈধতা খুব দরকারী। আমি কীভাবে মেনুগুলি তৈরি করব জানি না =)

  8.   হিউগা_নেজি তিনি বলেন

    দুর্দান্ত…। এখন আমি আমার স্ক্রিপ্ট churros lol কে কিছু "কঠোরতা" দিতে পারি

  9.   গোগ্রাসে গেলা তিনি বলেন

    কোডনিঞ্জায় আমাদের নম্র কাজটি কীভাবে আন্তর্জাতিক লিনাক্স সম্প্রদায়কে পরিবেশন করে তা দেখে দারুণ আনন্দিত

    1.    কেজেডিজি ^ গারা তিনি বলেন

      পরিষ্কার! 🙂
      সবকিছুই একসাথে সহায়তা এবং অবদান রাখার জন্য, এবং শিখা তৈরি করতে নয়, তাই না? 😉

  10.   দিয়েগো তিনি বলেন

    যে প্রক্রিয়া স্ক্রিপ্টটি চলছে তা আপনি যে প্রক্রিয়াটি সম্পর্কে জানতে চান তা চয়ন করার বিকল্পটি রেখে কিছুটা উন্নত করা যেতে পারে, এটি দেখতে এরকম কিছু হবে:

    #! / বিন / ব্যাশ
    প্রতিচ্ছবি "একটি পরিষেবা চয়ন করুন"
    সার্ভিস পড়ুন
    # পরিষেবা = 'মাইএসকিএল'
    if PS ax | grep -v গ্রেপ | গ্রেপ $ পরিষেবা> / দেব / নাল
    তারপর
    প্রতিধ্বনি "$ পরিষেবা পরিষেবা চলছে"
    আর
    প্রতিধ্বনি "$ পরিষেবা পরিষেবা বন্ধ"

  11.   জুয়া কার্লোস সি তিনি বলেন

    আমার কাছে খুব ব্যবহারিক স্ক্রিপ্ট রয়েছে তবে আমার যে সমস্যাটি রয়েছে তা সমাধান করার জন্য আমি একটি বিশেষ স্ক্রিপ্টের সন্ধান করছি, যা নিম্নলিখিতটি: আমাদের সংস্থায় একটি অ্যাপ্লিকেশন সার্ভার রয়েছে যা অভ্যন্তরীণ ব্যবহারকারীরা এটি টেলনেটের মাধ্যমে অ্যাক্সেস করে এবং একটি বিশেষ অ্যাপ্লিকেশন চালিত করে যা সীমিত is লাইসেন্সগুলির জন্য, ব্যবহারকারীরা 2 বা ততোধিক লাইসেন্স নেওয়ার জন্য একাধিক টেলনেটকে অপব্যবহার করে এবং খোলেন, তারপরে আমি যে স্ক্রিপ্টটি ভেবেছি তা হ'ল কোনও পদ্ধতি দ্বারা, কোন টেলনেট প্রক্রিয়াটি 2 ঘণ্টারও বেশি সময় ধরে নিষ্ক্রিয় রয়েছে এবং তাই একটি কিল পাঠান that পিড, আপনি আমাকে সাহায্য করতে পারেন?

    1.    দিয়েগো তিনি বলেন

      নিম্নলিখিত প্রোগ্রাম ইনস্টল করুন

      প্রবণতা ইনস্টল করুন

      এবং আপনার /etc/autolog.conf এ থাকা কনফিগারেশন ফাইলটি রয়েছে

  12.   টিটো তিনি বলেন

    দুর্দান্ত, বন্ধু, আমি আপনাকে একটি প্রশ্ন জিজ্ঞাসা করতে পারি, বিকল্পগুলির সাথে আমার একটি শেল স্ক্রিপ্ট দরকার এবং আমি এটি আপনার উপর ভিত্তি করে তৈরি করেছি এবং এটি দুর্দান্ত কাজ করে, তবে বিকল্পগুলির মধ্যে একটিতে ইমেল প্রেরণ করতে হয় (প্যাসিফিক্স ব্যবহার করে), এটি স্ক্রিনে বিষয়, পাঠ্য এবং প্রাপকদের জিজ্ঞাসা করে এবং কী প্রেরণ করুন এবং পরীক্ষা করুন যে এটি সঠিকভাবে প্রেরণ করা হয়েছে, মেলকিউ দিয়ে আমি সারিটি দেখতে পাচ্ছি এবং এটি প্রেরিত হয়েছে কিনা তা দেখতে পাব, তবে আমি বিষয়, পাঠ্য এবং প্রাপক প্রাপ্ত ভেরিয়েবলগুলি ব্যবহার করে কমান্ড দিয়ে ইমেলগুলি কীভাবে প্রেরণ করব? 🙁

    1.    কেজেডিজি ^ গারা তিনি বলেন

      আমার ইমেইলে লিখুন (kzkggaara[at]desdelinux[ডট]নেট) আরও শান্তভাবে কথা বলতে, আমি আপনাকে সাহায্য করতে পেরে খুশি হব :)

      1.    টিটো তিনি বলেন

        দারুণ ধন্যবাদ বন্ধু, আপনি পাশ!

  13.   Fer তিনি বলেন

    হ্যালো ভাল।
    আমার যখন একটি মেনু প্রয়োজন তখনই আমি এই দুর্দান্ত উদাহরণগুলি দেখতে পেয়েছি।
    আমি এটি করেছি এবং এটি কাজ করতে পারি না (পূর্ববর্তী পদক্ষেপে)।
    আমার 247 টি উপাদান রয়েছে, যা বিভিন্ন অঞ্চলীয় ডোমেনগুলি উল্লেখ করে।
    আমার যেটি দরকার তা হ'ল একটি মেনু যা থেকে দেশটি বেছে নেওয়া যায়:
    #! / বিন / ব্যাশ
    পরিষ্কার
    যখন:
    do
    প্রতিধ্বনি try চেষ্টা করার জন্য দেশটি চয়ন করুন »
    প্রতিধ্বনি «1। আফগানিস্তান (এএফ) »
    প্রতিধ্বনি «2। আলবেনিয়া (আ.লীগ) »
    প্রতিধ্বনি «3। জার্মানি (ডিই) »
    প্রতিধ্বনি «5। অ্যাঙ্গোলা (এও) »
    প্রতিধ্বনি «6। অ্যাঙ্গুইলা (এআই) »
    .. এবং 247 অবধি চলতে থাকে

    প্রতিধ্বনি -n "একটি বিকল্প নির্বাচন করুন [1 - 247]"
    অপশন পড়ুন
    কেস $ বিকল্প ইন
    1) প্রতিধ্বনি "এটি আপনি:"; হুয়ামি ;;
    2) প্রতিধ্বনি "আপনার এই আছে"; ডিএফ ;;
    3) প্রতিধ্বনি ""; uname -r ;;
    4) প্রতিধ্বনি "বাই"; প্রস্থান 1 ;;
    5) প্রতিধ্বনি "এটি আপনি:"; হুয়ামি ;;
    6) প্রতিধ্বনি "এটি আপনি:"; হুয়ামি ;;
    … এবং 247 অবধি অব্যাহত থাকে
    *) প্রতিধ্বনি «$ অপসিটি একটি অবৈধ বিকল্প। এটা এত কঠিন? ";;
    প্রতিধ্বনি "চালিয়ে যেতে একটি কী টিপুন ...";
    পড়ুন foo ;;
    যে সি
    সম্পন্ন

    আচরণটি নিম্নরূপ:
    4 ছাড়া যে কোনও বিকল্প, যা আউটপুট, প্রবেশ করা নম্বরটি মুছে ফেলে এবং একটি নতুন সংখ্যার জন্য অপেক্ষা করে।
    4 প্রবেশ করে বেরিয়ে আসে।
    যদি আমি 4 এর কোড অন্য কোনও লাইনে রাখি (আসুন 150 বলুন) এটি সমস্যা ছাড়াই সমানভাবে উপস্থিত হয়।
    আমি কোডটি এই বিন্যাসে রাখার চেষ্টা করেছি:
    151) প্রতিধ্বনি "এটি আপনি:";
    আমি কে ;;
    একই ফলাফল সঙ্গে।
    আমি ভাবছি এত দীর্ঘ মেনুর জন্য আরও ভাল বিকল্প আছে কিনা এবং অবশ্যই আমিও ভুল করছি।
    একটি সাহায্য খুব প্রশংসা করা হবে, আপনাকে ধন্যবাদ

  14.   কেবল রাউল তিনি বলেন

    দুর্দান্ত ... আমি মনে করি শেল থেকে উঠা খুব ভাল very

    Gracias

  15.   মার্কোস তিনি বলেন

    দুর্দান্ত, আরে আমি কীভাবে কোনও ফাইল দিয়ে আমার বাশকে কাজ করতে পারি
    উদাহরণ:

    আপলোড.শ fotodelavecina.jpg

    আমার বাশ স্ক্রিপ্ট "আপলোড.শ" এর আমার এফটিপি-তে অ্যাক্সেসের তথ্য আছে তা ভেবে

    শুভেচ্ছা এবং ধন্যবাদ 😀

  16.   নেটজুলো এনটিএক্স তিনি বলেন

    ভাল মানুষ, সমস্ত স্ক্রিপ্টগুলির জন্য আপনাকে অনেক ধন্যবাদ, আমি একটি সেন্টোস সার্ভার সেট আপ করেছি এবং আপনি জানেন না যে এই টেমপ্লেটগুলি আমার কাছে কতটা আসে, দয়া করে ইমেলের মাধ্যমে আমার সাথে যোগাযোগ করুন। আমি আপনাকে কিছু প্রস্তাব করতে চাই

  17.   গ্যাব্রিয়েল বালদাররামোস তিনি বলেন

    মেনু তৈরির সময় আপনি রিড ফু ব্যবহার করেন কেন? দ্রুত উত্তর আমার প্রয়োজন