सवाल पायथन के साथ sys व्यवस्थापक चीजें करने के साथ उलझन में या नहीं


मैं बैश में बैकअप कर रहा था और मैंने कुछ अन्य बैश स्क्रिप्ट भी लिखी हैं। मैं इसे पायथन में स्थानांतरित करना चाहता था क्योंकि मुझे एआई तकनीकों के लिए अजगर सीखना था और मैं हमेशा उसमें देरी कर रहा था। जैसा कि मुझे अक्सर sys व्यवस्थापक चीजें करना पड़ता है, इसलिए मैंने सोचा कि अगर मैं अजगर में चीजें करता हूं तो यह अजगर पर अच्छा होगा। अब मैं कुछ चीजों से उलझन में हूं

1) मैंने देखा है कि मैं चीजों को 1 लाइन में बैश में कर सकता हूं लेकिन पायथन में मुझे इसके लिए कोड की 15 लाइनें लिखनी होंगी, हम टैर बॉल बैकअप बनाते हैं। sed, awk लाइन में फ़ाइलों को फ़िल्टर कर सकते हैं जहां पायथन में मुझे कई और पंक्तियां लिखनी होंगी। तो मेरे प्रश्न गलत रास्ते पर जा रहे हैं। क्या पाइथन वास्तव में sys व्यवस्थापक चीजों के लिए उपयोग किया जाता है या नहीं। मेरे लिए जेडीईई में सादे एचटीएमएल में 5 पेज स्थिर वेबसाइट बनाना पसंद है।

2) मैं जानना चाहता हूं कि बैश सबकुछ कर सकता है तो व्यक्ति को पायथन क्यों चुनना चाहिए। मैं केवल बोउट sys व्यवस्थापक चीजें बात कर रहा हूँ।

तो मुझे पता होना चाहिए कि मैं पाइथन का उपयोग करके खुद को मारने पर हूं या ऐसा इसलिए है क्योंकि मैं अभी भी सीख रहा हूं कि मुझे यह मुश्किल लगता है?

मैं सिर्फ यह जानना चाहता हूं कि पाइथन वास्तव में उन चीजों के लिए है जैसे बैकअप, लॉग फाइल आदि की जांच करना।


4
2018-05-02 02:18


मूल




जवाब:


पाइथन एक सामान्य उद्देश्य वाली स्क्रिप्टिंग भाषा है जैसे पर्ल है। इसका मतलब है कि यह बैश स्क्रिप्टिंग की तुलना में अधिक शक्तिशाली टूल है, लेकिन इसका यह भी अर्थ है कि सिंटैक्स आमतौर पर अधिक वर्बोज़ होने जा रहा है और स्क्रिप्ट लिखना अधिक जटिल होगा। बैश स्क्रिप्ट्स को डोमेन-विशिष्ट होने का लाभ होता है, और इसका मतलब है कि वे बहुत सारी धारणाएं करते हैं जो अधिकतर कार्यों को आसान बनाते हैं। हालांकि, अगर धारणाओं ने जो काम किया है, वह आपको फिट करने के लिए आवश्यक नहीं है, तो आपको चीजों को जिस तरह से काम करने की ज़रूरत है, उसे बनाने के लिए आपको लंबा रास्ता तय करना पड़ सकता है।

यह वही प्रश्न है जो बैच या वीबीस्क्रिप्ट में लिखने से निपटने के दौरान विंडोज सिसाडमिन का सामना करना पड़ता था। पावरशेल काफी कम करने में मदद करता है, लेकिन आपको अभी भी समस्या का सामना करना पड़ रहा है "क्या यह कार्य परिसर PowerShell की आवश्यकता के लिए पर्याप्त है, या एक बैच स्क्रिप्ट है जो नौकरी को विश्वसनीय रूप से पूरा करने के लिए पर्याप्त है?"।

हकीकत में, यह उस कार्य पर निर्भर करता है जो आपको करने की ज़रूरत है। यदि आपके लिए पायथन में लिखने और बनाए रखने के लिए कोई कार्य अधिक आसान है, तो इसका उपयोग करें। यदि बैश वास्तव में वास्तव में सरल है, तो इसका उपयोग करें। स्क्रिप्टिंग भाषाएं हैं उपकरण। उन्हें इस तरह प्रयोग करें। उस टूल का उपयोग करें जो आपके कार्य की आवश्यकताओं के अनुरूप सर्वोत्तम है।

जब मैं एक स्क्रिप्ट लिख रहा हूं, तो मेरे पास मानसिक चेकलिस्ट है:

  1. मैं वास्तव में क्या कार्य पूरा करने की कोशिश कर रहा हूं? एक कदम है हमेशा समस्या को परिभाषित करें।
  2. इस स्क्रिप्ट को लिखने के लिए कौन सी भाषा तेज है? मेरा समय मूल्यवान है।
  3. इस काम के लिए किसी और को पढ़ने, समझने और समर्थन करने के लिए कौन सी भाषा बेहतर है? अन्य लोगों का समय भी मूल्यवान है।
  4. अधिक मजबूत, अधिक भरोसेमंद, या अधिक दीर्घकालिक सुधार के परिणामस्वरूप कौन सी भाषा जा रही है? मैं इसे एक बार लिखना चाहता हूं और इसे हमेशा के लिए तय करना चाहता हूं।
  5. क्या कोई ऐसी चीज है जो एक भाषा अनुचित बनाती है? क्या पाइथन या पावरशेल उपलब्ध नहीं होगा, या कुछ मॉड्यूल स्थापित नहीं होंगे? क्या मेरी बैच फ़ाइल या बैश स्क्रिप्ट कॉल प्रोग्राम जो मौजूद होने की गारंटी नहीं है और मैं स्क्रिप्ट के साथ बनाए रख सकता हूं?

7
2018-05-02 02:56



@ मिरर51: मैं बेकन बिट्स के साथ और अधिक सहमत नहीं हो सकता। मैं आमतौर पर त्वरित और गंदे कार्यों के लिए बैश का उपयोग करता हूं ... यदि समस्या (अधिक) जटिल हो जाती है तो मैं अजगर का उपयोग करता हूं। पायथन का उपयोग करने से पहले मैं एक तेज प्रोटोटाइप के लिए बैश का उपयोग करता हूं। - hmontoliu
@hmontoliu मैं वास्तव में यह सुनना चाहता हूं कि वह जटिल कार्य क्या हो सकता है जो आपको पायथन का उपयोग करने के लिए तैयार करेगा क्योंकि मेरे लिए बाश चीजें बहुत आसानी से कर सकती हैं। किसी को भी अजगर की आवश्यकता क्यों होगी। मुझे बस उस परिस्थिति परिदृश्य को जानने की ज़रूरत है जहां कोई व्यक्ति समझा सकता है कि प्रारंभ में काम ए को बैश में किया गया था, फिर यह जटिल हो गया तो पाइथन ने हल किया। मैं वास्तव में उस मामले को जानना चाहता हूं - Mirage
@ मिरर51: 2 उदाहरण (कई में), एक बैश स्क्रिप्ट का उपयोग psql डेटाबेस से कुछ संबंधों के साथ कई हजार फ़ाइलों को grep करने के लिए किया गया था; वह कार्य जटिलता में बढ़ गया और पाइथन पर पोर्ट किया गया था। इसने प्रदर्शन में वृद्धि की और हमें सीएलआई इंटरफ़ेस के पूरक के लिए आसानी से वेब उपयोगकर्ता इंटरफ़ेस लिखने की अनुमति भी दी; एक और उदाहरण (थोड़ा और सामान्य): आपके पास एकाधिक सर्वरों में सामान करने के लिए एक स्क्रिप्ट है; सर्वर और चलाने के लिए आदेश या तो कॉन्फ़िगरेशन फ़ाइल में या स्क्रिप्ट में कोडित सरणी में स्टोर होते हैं। यदि आप स्पष्ट वाक्यविन्यास के कारण स्क्रिप्ट को पाइथन में माइग्रेट करते हैं तो सामान आसान और स्पष्ट हो जाता है - hmontoliu
धन्यवाद @hmontoliu, जो मुझे जारी किया कि मैं अजगर के साथ जाने में कोई नुकसान नहीं कर रहा हूँ। यदि आप इस प्रकार के कार्यों को करने वाले अजगर रसीदों के कुछ ऑनलाइन लिंक दे सकते हैं, तो मैं बहुत आभारी हूं, क्योंकि मैं नौसिखिया हूं, मैं देखना चाहता हूं कि इन चीजों को कैसे करना है - Mirage
@ Mirror51 जब पाइथन बेहतर हो सकता है, तो विस्तार करें, मान लें कि मेरे पास एक स्क्रिप्ट है जिसे एलडीएपी सर्वर या SQL सर्वर से पूछताछ करने की आवश्यकता है। पाइथन में ऐसा करने के लिए अंतर्निहित मॉड्यूल हैं, और परिणाम से बहुत आसान व्यवहार करेंगे क्योंकि वेरिएबल रिकॉर्ड सेट ऑब्जेक्ट्स हैं। यह एक बैश स्क्रिप्ट के साथ और अधिक कठिन होगा, क्योंकि आपको बड़े रिकॉर्ड सेट के लिए अस्थायी फ़ाइल प्रबंधन से निपटना होगा और रेगेक्स के साथ तारों को पार्स करना होगा। डेटा डेटा विसंगति के कारण हमेशा एक त्रुटि को मारने का जोखिम होता है (ओह नहीं, एक हाइफेनेटेड अंतिम नाम!)। - Bacon Bits


आप यहां कुछ हद तक अशिष्ट सवाल पूछ रहे हैं। यह पूछने की तरह है कि जब कोई सॉकेट सेट काम करेगा तो किसी के पास उनके टूल बॉक्स में अलग-अलग सॉकेट सेट क्यों होंगे। प्रत्येक उपकरण (इस मामले में प्रोग्राम / भाषा / स्क्रिप्टिंग पर्यावरण) में इसकी अपनी अनूठी ताकत और कमजोरियां होती हैं। उदाहरण के लिए जब आप CFEngine (सी में विश्वास में लिखित) एक ही चीज करते हैं तो आप कठपुतली (रूबी में लिखे गए) का उपयोग क्यों करेंगे?

एक शैल पर्यावरण पर एक पटकथा भाषा के सबसे बड़े फायदों में से एक पठनीयता (obfuscated पर्ल नहीं सामना कर रहा है) है। भाषा स्ट्रिंग मैनिपुलेशन में भी करना बहुत आसान हो सकता है। उदाहरण के लिए बैश में आपको अपनी स्ट्रिंग को sedse करने के लिए sed / awk / grep पर गूंजने की आवश्यकता हो सकती है, लेकिन पाइथन / रूबी / पर्ल में आपके पास रेगेक्स और स्ट्रिंग मैनिपुलेशन बनाया गया है। दूरस्थ सॉकेट के साथ संचार भी लिखने से आसान हो सकता है कर्ल, wget या netcat के आसपास लिपि। इसके अलावा स्क्रिप्टिंग भाषाओं को अपनी प्रसंस्करण करने के लिए फोर्क करने की आवश्यकता नहीं है। उदाहरण:

myvar=$(echo "my string" | grep string | cut -d"" -f 3)

इसके परिणामस्वरूप तीन अलग कांटे का निर्माण होगा जो बदले में सिस्टम को धीमा कर देगा।

नीचे की रेखा पायथन को एक आवश्यकता को भरने के लिए डिजाइन किया गया था, और इसके कारण इसकी ताकत और कमजोरियां हैं। एक महान sys-admin और एक औसत sys-admin के बीच का अंतर यह है कि वे विभिन्न उपकरणों की ताकत जानते हैं। सीखना पायथन एक अच्छा विचार है, लेकिन यह एक आकार सभी उपकरण फिट बैठता नहीं है।


3
2018-05-02 02:46





मैं एक sysadmin और एक अजगर प्रोग्रामर हूँ। मैं आमतौर पर क्या सोचता हूं, वजन और पायथन में कुछ हासिल करने के लिए मुझे क्या करना होगा, और उसके बाद नौकरी के लिए सबसे अच्छा टूल (वह मुझे जो अधिक गति / शक्ति देता है) का उपयोग करना होगा। एक दूसरे को बाहर नहीं करता है, अजगर पर एक नज़र डालें ओएस मॉड्यूल और आप देखेंगे कि वहां कई चीजें हैं जो सिस्टम प्रशासन में मदद कर सकती हैं।

अंगूठे के नियम के रूप में (जो मैं उपयोग करता हूं, वाईएमएमवी): यदि आपको बहुत से आदेश चलाना होगा तो आप बैश के साथ बेहतर होंगे, और यदि आपको टेक्स्ट फाइलों से फ़ॉर्मेटिंग और गणना करना होगा तो पायथन बेहतर होगा।

साथ ही, आप कहते हैं कि आप अजगर सीख रहे हैं, इसलिए मैं आपको सबसे पहले जो कुछ जानता हूं उससे चिपकने का सुझाव देता हूं। पाइथन के साथ घनिष्ठता प्राप्त करने के लिए कुछ टेस्ट प्रोजेक्ट रोलिंग प्राप्त करें और जब आप इससे बेहतर हो जाएंगे तो आप देखेंगे कि आप स्वाभाविक रूप से चीजों या पाइथन में चीजें करने की इच्छा रखते हैं जो आप करना चाहते हैं।


3
2018-05-02 02:46





एक सिसडमिन जो पाइथन का उपयोग करता है और अक्सर बैश करता है, मैं कह सकता हूं कि मेरे पास अक्सर वही प्रश्न होता है जो आप करते हैं। आम तौर पर (बहुत आम तौर पर) मैं sysadmin सामान के लिए पायथन का उपयोग करके गंभीरता से पुनर्विचार करता हूं जब मुझे एहसास होता है कि मुझे एकाधिक खुले () कमांड की आवश्यकता होगी या अगर मैं इसे पायथन में कार्यान्वित करता हूं तो उपप्रोसेस (या इसी तरह) आयात करने की आवश्यकता होगी। उस ने कहा, कभी-कभी आपके लिए अतिरिक्त कार्यक्षमता जोड़ने के लिए पाइथन आसान होता है। कई मौकों पर मैंने कुछ लिखा है जो मैंने सोचा था कि बैश में सरल था, फिर इसे पायथन (या जो भी प्रोग्रामिंग भाषा) में फिर से बनाया गया क्योंकि मुझे एहसास हुआ कि यह मेरे विचार से कहीं अधिक जटिल था।

वास्तव में यह तय करने के लिए प्रोग्रामर के रूप में आप पर निर्भर है। यदि आप नहीं जानते कि कैसे एक विधि को नकारें - अगर आप अनुभव से सीख सकते हैं, तो आप क्यों नहीं?


2
2018-05-02 06:09