उन्नत स्क्रिप्टिंग परियोजना
कमांड-लाइन उपकरणों से लेकर उन्नत Bash स्क्रिप्टिंग तकनीकों तक, सीखी गई सभी अवधारणाओं को समाहित करने वाली व्यापक परियोजना पर कार्य करें।
उन्नत स्क्रिप्टिंग परियोजना, CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
प्रोजेक्ट आरंभ: चुनौती
हमारे अंतिम प्रोजेक्ट में आपका स्वागत है! इस पाठ्यक्रम के दौरान आपने कई शक्तिशाली Linux कमांड और Bash स्क्रिप्टिंग तकनीकें सीखी हैं। अब उन सभी को एक साथ लागू करने का समय है।
इस पाठ में हम शुरू से एक व्यावहारिक, उन्नत Bash स्क्रिप्ट बनाएँगे। यह प्रोजेक्ट आपको सीखी हुई हर बात को एकल, कार्यशील समाधान में जोड़ने की चुनौती देगा।
अपने प्रोजेक्ट का लक्ष्य निर्धारित करें
हमारा लक्ष्य फ़ाइल निगरानी और संग्रहण स्क्रिप्ट बनाना है। कल्पना कीजिए कि आपके पास एक सर्वर है जो लॉग फ़ाइलें बनाता है और आपको उन्हें बिना मैन्युअल हस्तक्षेप के नियमित रूप से संसाधित करना है।
हमारी स्क्रिप्ट ये काम करेगी:
- नई टेक्स्ट फ़ाइलों के लिए किसी विशिष्ट डायरेक्टरी की लगातार निगरानी करना।
- हर नई फ़ाइल को संसाधित करना (जैसे, उसकी पंक्तियाँ गिनना)।
- संसाधित फ़ाइल को संग्रह डायरेक्टरी में ले जाना।
- समय-मुहर और किसी भी त्रुटि सहित सभी गतिविधियों का लॉग दर्ज करना।
स्क्रिप्ट की नींव: Shebang और वेरिएबल
हर अच्छी स्क्रिप्ट की शुरुआत स्पष्ट नींव से होती है। हम अपना shebang परिभाषित करके और मुख्य वेरिएबल सेट करके शुरुआत करेंगे। ये वेरिएबल हमारी स्क्रिप्ट को लचीला और कॉन्फ़िगर करने में आसान बनाएँगे।
हम अपनी निगरानी डायरेक्टरी, संग्रह डायरेक्टरी और लॉग फ़ाइल के पथ परिभाषित करेंगे।
#!/bin/bash
# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"
# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"डायरेक्टरी का मौजूद होना सुनिश्चित करना
हमारी स्क्रिप्ट निगरानी या संग्रहण शुरू कर सके, उससे पहले हमें यह सुनिश्चित करना होगा कि आवश्यक डायरेक्टरी मौजूद हों। यहाँ mkdir -p का उपयोग बहुत ज़रूरी है, क्योंकि यह डायरेक्टरी को केवल तब बनाता है जब वे पहले से मौजूद न हों और उनके मौजूद होने पर त्रुटि भी नहीं देता।
डायरेक्टरी बनाने में विफलता होने पर शालीनता से बाहर निकलने के लिए हम बुनियादी त्रुटि प्रबंधन भी जोड़ेंगे।
#!/bin/bash
# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"
# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"
# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
echo "$(date): Directories checked/created." >> "$LOG_FILE"निगरानी लूप
नई फ़ाइलों की निगरानी के लिए हमारी स्क्रिप्ट को लगातार चलना होगा। इसके लिए while true लूप बिल्कुल उपयुक्त है। लूप के अंदर हम जाँचों के बीच कुछ सेकंड रुकने के लिए sleep का उपयोग करेंगे, ताकि यह बहुत अधिक संसाधनों का उपयोग न करे।
गतिविधि पर नज़र रखने के लिए हम हर जाँच का लॉग भी दर्ज करेंगे।
#!/bin/bash
# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"
# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"
# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
echo "$(date): Directories checked/created." >> "$LOG_FILE"
# --- Main Monitoring Loop ---
while true; do
echo "$(date): Checking for new files in $MONITOR_DIR..." >> "$LOG_FILE"
# File processing will go here
sleep 5 # Check every 5 seconds
doneफ़ाइलें ढूँढना और संसाधित करना
अपने लूप के अंदर हमें नई टेक्स्ट फ़ाइलें ढूँढनी हैं। इसके लिए find कमांड आदर्श है। हर मिली हुई फ़ाइल को संसाधित करने के लिए इसे for लूप के साथ इस्तेमाल करेंगे। संसाधन चरण के रूप में हम हर फ़ाइल की पंक्तियों की संख्या गिनने के लिए wc -l का उपयोग करेंगे।
यह किसी स्क्रिप्ट में कमांड-लाइन टूल को एक साथ इस्तेमाल करने का तरीका दिखाता है।
#!/bin/bash
# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"
# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"
# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
echo "$(date): Directories checked/created." >> "$LOG_FILE"
# --- Main Monitoring Loop ---
while true; do
echo "$(date): Checking for new files in $MONITOR_DIR..." >> "$LOG_FILE"
# Find new .txt files and process them
for file in $(find "$MONITOR_DIR" -maxdepth 1 -type f -name "*.txt"); do
if [ -f "$file" ]; then # Double-check if it's a regular file
LINE_COUNT=$(wc -l < "$file")
echo "$(date): Found '$file'. Lines: $LINE_COUNT." >> "$LOG_FILE"
# Archiving will go here
fi
done
sleep 5 # Check every 5 seconds
doneसंसाधित फ़ाइलों को संग्रहित करना
किसी फ़ाइल को संसाधित करने के बाद हमें उसे अपनी संग्रह निर्देशिका में ले जाना होगा। इसके लिए mv कमांड का उपयोग किया जाता है। हम mv की निकास स्थिति जाँचने के लिए एक if कथन भी जोड़ेंगे, ताकि यह सुनिश्चित हो सके कि फ़ाइल सफलतापूर्वक स्थानांतरित हुई है और किसी भी विफलता का लॉग दर्ज हो।
इससे हमारी स्क्रिप्ट अधिक मजबूत बनती है।
#!/bin/bash
# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"
# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"
# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
echo "$(date): Directories checked/created." >> "$LOG_FILE"
# --- Main Monitoring Loop ---
while true; do
echo "$(date): Checking for new files in $MONITOR_DIR..." >> "$LOG_FILE"
for file in $(find "$MONITOR_DIR" -maxdepth 1 -type f -name "*.txt"); do
if [ -f "$file" ]; then
LINE_COUNT=$(wc -l < "$file")
echo "$(date): Found '$file'. Lines: $LINE_COUNT." >> "$LOG_FILE"
mv "$file" "$ARCHIVE_DIR/"
if [ $? -eq 0 ]; then
echo "$(date): Moved '$file' to '$ARCHIVE_DIR'." >> "$LOG_FILE"
else
echo "$(date): ERROR: Failed to move '$file' to '$ARCHIVE_DIR'." >> "$LOG_FILE"
fi
fi
done
sleep 5
doneट्रैप के साथ सुचारु निकास जोड़ना
लंबे समय तक चलने वाली स्क्रिप्ट को सुचारु रूप से रुकने का तरीका चाहिए। trap कमांड हमें SIGINT जैसे सिग्नल पकड़ने और बाहर निकलने से पहले सफ़ाई फ़ंक्शन चलाने की अनुमति देता है। इससे यह सुनिश्चित होता है कि हमारी स्क्रिप्ट अपने बंद होने का लॉग दर्ज करे।
उत्पादन के लिए तैयार स्क्रिप्ट बनाने की दिशा में यह एक महत्वपूर्ण चरण है।
#!/bin/bash
# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"
# --- Functions ---
cleanup() {
echo "$(date): Script received stop signal. Exiting gracefully." >> "$LOG_FILE"
exit 0 # Exit with success status
}
# --- Trap Signals ---
# Trap SIGINT (Ctrl+C) and call the cleanup function
trap cleanup SIGINT
# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"
# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
echo "$(date): Directories checked/created." >> "$LOG_FILE"
# --- Main Monitoring Loop ---
while true; do
echo "$(date): Checking for new files in $MONITOR_DIR..." >> "$LOG_FILE"
for file in $(find "$MONITOR_DIR" -maxdepth 1 -type f -name "*.txt"); do
if [ -f "$file" ]; then
LINE_COUNT=$(wc -l < "$file")
echo "$(date): Found '$file'. Lines: $LINE_COUNT." >> "$LOG_FILE"
mv "$file" "$ARCHIVE_DIR/"
if [ $? -eq 0 ]; then
echo "$(date): Moved '$file' to '$ARCHIVE_DIR'." >> "$LOG_FILE"
else
echo "$(date): ERROR: Failed to move '$file' to '$ARCHIVE_DIR'." >> "$LOG_FILE"
fi
fi
done
sleep 5
doneअपनी उन्नत स्क्रिप्ट का परीक्षण करना
अब जबकि हमारी स्क्रिप्ट पूरी हो गई है, इसका परीक्षण करने का समय है! आम तौर पर आप इसे पृष्ठभूमि में चलाएँगे, जैसे ./monitor.sh &, फिर $MONITOR_DIR में परीक्षण फ़ाइलें बनाएँगे और $LOG_FILE तथा $ARCHIVE_DIR को देखेंगे।
यहाँ एक छोटी स्क्रिप्ट है, जिसे चलाकर आप अपनी निगरानी स्क्रिप्ट के लिए आसानी से एक परीक्षण फ़ाइल बना सकते हैं।
#!/bin/bash
# create_test_file.sh
MONITOR_DIR="/tmp/coddykit_monitor"
mkdir -p "$MONITOR_DIR" # Ensure dir exists for this test script
# Create a unique test file
TEST_FILE="$MONITOR_DIR/test_log_$(date +%Y%m%d_%H%M%S).txt"
echo "This is a test entry." > "$TEST_FILE"
echo "Another line for testing." >> "$TEST_FILE"
echo "Created new test file: $TEST_FILE"स्क्रिप्ट के तर्क की समीक्षा
हमारी उन्नत स्क्रिप्ट में कई अवधारणाएँ शामिल हैं। आइए, हमारे द्वारा इस्तेमाल की गई कुछ मुख्य कमांड और संरचनाओं की संक्षेप में समीक्षा करें।
सोचिए कि हमारे परियोजना लक्ष्य को पूरा करने में प्रत्येक कमांड की क्या भूमिका है।
आगे: शेड्यूलिंग और अनुकूलन
यह स्क्रिप्ट लगातार चलने के लिए बनाई गई है। वास्तविक परिस्थिति में आप इसे nohup ./script.sh & का उपयोग करके पृष्ठभूमि में चला सकते हैं या, अधिक सामान्य रूप से, इसे समय-समय पर चलने के लिए क्रॉन के माध्यम से शेड्यूल कर सकते हैं।
याद रखें, इस तरह के कार्यों को स्वचालित करने के लिए क्रॉन बहुत उपयुक्त है। आप इसे हर कुछ मिनट में चलने के लिए शेड्यूल कर सकते हैं, ताकि यह निर्देशिका की जाँच करे और आवश्यकता के अनुसार फ़ाइलों को संसाधित करे।
इसे इस प्रकार अनुकूलित करने पर विचार करें:
- अलग-अलग फ़ाइल प्रकारों को संसाधित करें।
- अलग-अलग कार्रवाइयाँ करें, जैसे फ़ाइलों को संपीड़ित करना या क्लाउड पर अपलोड करना।
- अधिक उन्नत त्रुटि रिपोर्टिंग जोड़ें, जैसे ईमेल सूचनाएँ।
परियोजना का पुनरावलोकन और अगले चरण
बधाई हो! आपने अभी-अभी एक उन्नत Bash स्क्रिप्टिंग परियोजना पूरी की है, जिसमें Linux की कई कमांड और स्क्रिप्टिंग तकनीकें शामिल हैं।
आपने सीखा:
- एक मजबूत, लंबे समय तक चलने वाली स्क्रिप्ट की संरचना बनाना।
- कॉन्फ़िगरेशन के लिए चर का उपयोग करना।
- लगातार निगरानी के लिए लूप लागू करना।
find,wcऔरmvजैसी कमांड को संयोजित करना।trapके साथ त्रुटि प्रबंधन और सुचारु निकास जोड़ना।
यह परियोजना अधिक जटिल स्वचालन समाधान बनाने के लिए एक मजबूत आधार है। प्रयोग करते रहें और नई चीज़ें बनाते रहें!
एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 142
- पाठ
- 568
अक्सर पूछे जाने वाले प्रश्न
क्या “उन्नत स्क्रिप्टिंग परियोजना” पाठ निःशुल्क है?
हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “उन्नत स्क्रिप्टिंग परियोजना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“उन्नत स्क्रिप्टिंग परियोजना” में मैं क्या सीखूँगा?
कमांड-लाइन उपकरणों से लेकर उन्नत Bash स्क्रिप्टिंग तकनीकों तक, सीखी गई सभी अवधारणाओं को समाहित करने वाली व्यापक परियोजना पर कार्य करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DevOps बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“उन्नत स्क्रिप्टिंग परियोजना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Cron से कार्यों का निर्धारण
- सिस्टम प्रशासन का स्वचालन
- उन्नत स्क्रिप्टिंग परियोजना
- स्वचालित लॉग रोटेशन और सफ़ाई