गैर-विंडोज वर्कफ़्लो के साथ पॉवर्सशेल स्क्रिप्ट को एकीकृत करने की विधि?


16

मुझे सुबह की नई मशीनों की गंध बहुत पसंद है।

मैं एक मशीन निर्माण वर्कफ़्लो को स्वचालित कर रहा हूं जिसमें मेरे बुनियादी ढांचे में कई अलग-अलग सिस्टम शामिल हैं, जिनमें से कुछ सोलारिस होस्ट्स, पीएक्सई बूटिंग लिनक्स सिस्टम पर 15 साल पुरानी पर्ल स्क्रिप्ट और विंडोज सर्वर 2008 पर पॉवर्सशेल शामिल हैं।

मैं अलग-अलग हिस्सों में से प्रत्येक को स्क्रिप्ट कर सकता हूं, और लिनक्स और यूनिक्स स्वचालन को एकीकृत करना काफी सरल है, लेकिन मैं एक नुकसान में हूं कि कैसे पॉवरशेल स्क्रिप्ट को बाकी प्रक्रियाओं में एक साथ टाई करने के लिए।

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

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

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

जवाबों:


5

मैंने इस बहुत समस्या पर पाउंडिंग में घंटे बिताए हैं और यह अंततः दो व्यवहार्य विकल्पों के लिए आया है (गैर-व्यवहार्य विकल्पों में से बहुत सारे विकल्प हैं):

  1. किसी वेबएपी की मेजबानी करने वाले एक आईआईएस सेवा के साथ एक विंडोज बॉक्स का निर्माण करें जो दोनों डोमेन है और इस तरह से सेट किया गया है कि इसमें से WinRM सत्र काम करेगा।
  2. Cygwin

दूसरे विकल्प के साथ आप वास्तविक विंडो बिट्स में प्राप्त करने के लिए जीएनयू / पॉज़िक्स एब्स्ट्रक्शन लेयर के माध्यम से अपना रास्ता लड़ रहे हैं। जो आपके साथ करने में सक्षम है उसे प्रतिबंधित करता है।

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


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

2
@MattSimmons मैंने $ जॉब -1 में कुछ ऐसा ही किया था। IIS IP प्रतिबंध बहुत आसान बनाते हैं; अगर एपीआई कॉल केवल एक मेजबान से आ सकता है, तो यह हमले की सतह को काफी कम कर देता है।
sysadmin1138

मैंने इसका उपयोग नहीं किया है, लेकिन जो मैंने पढ़ा है उससे WinRM अपने आप (बिना IIS या एक कस्टम एपीआई) चला सकता है। प्रतिबंधात्मक रूटिंग और केर्बरोस प्रमाणीकरण का उपयोग करें और यह लगता है (SOUNDS) की तरह यह बहुत सुरक्षित हो सकता है। विचार?
laughingbovine

@laughingbovine समस्या हमेशा WinRM समर्थन रही है। आईआईएस विधि मैं प्रस्तावित करता हूं कि पॉवरशेल को एक रीस्ट एपीआई के साथ क्रोन करने की अनुमति देता है जो कि सब कुछ के बारे में समर्थन करता है। WinRM समर्थन को कुछ स्थानों पर मुश्किल से समर्थन मिलता है। लगभग तीन साल के बाद से मैं यह लिखा है, कि समर्थन शायद न के बराबर राज्य यह 2012 में था से सुधार हुआ है
sysadmin1138

3

आप क्रॉस-प्लेटफ़ॉर्म शेड्यूलिंग या वर्कफ़्लो ऑटोमेशन सॉफ़्टवेयर भी खरीद सकते हैं जो पिछले कार्यों के आधार पर कई मेजबानों पर देशी स्क्रिप्ट को किक कर सकते हैं, या यहां तक ​​कि उनके लौटे परिणाम भी। बड़े उद्यम Tivoli, UC4, Espresso (CA dSeries, now) जैसे सॉफ़्टवेयर का उपयोग करते हैं जो ऐसा करता है, और मैंने इसे बड़े उद्यमों में उपयोग किया है जिन्हें इस प्रकार की चीज़ करने की आवश्यकता है। FYI करें, ये अक्सर ओरेकल नौकरियों जैसी चीज़ों के लिए देशी समर्थन करते हैं, जिससे आप उस प्रिटैग का अंदाज़ा लगा सकते हैं जिसे आप देख रहे होंगे।

(मेरी पिछली नौकरी में, वे वैसे भी साइगविन का इस्तेमाल करते थे , ताकि प्लेटफॉर्म के बीच वर्कलोड चले जाने पर वे संशोधन के बिना एक ही पर्ल स्क्रिप्ट का उपयोग कर सकें।

आप अपना खुद का निर्माण करने की कोशिश भी कर सकते हैं, जैसा कि @ sysadmin1138 बताते हैं; यह एक मजेदार परियोजना होगी, और प्रयोग करने योग्य होने के लिए पर्याप्त मजबूत भी हो सकती है और जब आप पहले प्रयास में वित्तीय निर्यात विफल हो जाते हैं, तो आपको सुबह 2 बजे पृष्ठांकित नहीं किया जाएगा।


1
सौभाग्य से मैं वित्तीय डेटा के आसपास से नहीं गुजर रहा हूं :-) यह एक कॉलेज के लिए स्वचालन है। बहुत कम पकौड़ा कारक।
मैट सिमंस

3

मैं Powershell v3.0 में शुरू Powershell Web Access सुविधा का उपयोग करेगा। यह आपको लिनक्स होस्ट से पॉवर्सशेल स्क्रिप्ट का उपयोग करने की अनुमति देता है।


2

PowerShell सर्वर आपको Windows सर्वर में SSH की सुविधा देता है और एक PowerShell कंसोल प्राप्त करता है। मैंने इसे नि: शुल्क परीक्षण से परे उपयोग नहीं किया है, लेकिन मेरे अनौपचारिक उपयोग ने मुझे साबित कर दिया कि यह एक काफी विश्वसनीय उत्पाद था।


Bleh, इनका मूल्य निर्धारण ऐसा है कि इसे 'सब कुछ पर तैनाती के बजाय तैनाती-सर्वर उपयोग के लिए डिज़ाइन किया गया है जिसे दूरस्थ रूप से प्रबंधित करने की आवश्यकता है'। व्यावहारिक, लिनक्स की तुलना में सिर्फ एक अलग मॉडल।
sysadmin1138

2

आप बाद में कैसा महसूस करना चाहते हैं, क्योंकि हमेशा टेलनेट :)

गंभीरता से हालांकि, आपको PowerShell स्क्रिप्ट को कॉल करने के लिए लिनक्स सर्वर की आवश्यकता क्यों है? क्या आप अपने वर्कफ़्लो को फिर से डिज़ाइन कर सकते हैं ताकि लिनक्स सर्वर tftp के माध्यम से सही बूट.wim इमेज को एक PXE बूटेड होस्ट पर डिलीवर कर सके? मैं एक सौभाग्य से अतीत में एक Windows फ़ाइल सर्वर पर अलग-अलग उत्तर फ़ाइलों के साथ एक Windows छवि रखते हुए और लिनक्स होस्ट से tftpd का उपयोग करके एक कस्टम WinPE बूट छवि प्रदान करता हूं। तब, आपके पास उत्तर फ़ाइल कॉल को सही PowerShell स्क्रिप्ट हो सकती है और आपको Cygwin जैसे क्रॉस-प्लेटफॉर्म yuckiness से निपटने की आवश्यकता नहीं है।


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

@MattSimmons मुझे लगता है कि मैं आवश्यकताओं को पूरी तरह से समझ नहीं पा रहा हूं तो :-) लिनक्स सर्वर को पॉवरशेल स्क्रिप्ट को कॉल करने की आवश्यकता क्यों है? अतीत में मैंने एक मशीन में मशीन प्रोविजनिंग जानकारी (जिसे * nix सर्वर द्वारा अपडेट किया जा सकता है) रख कर इस आवश्यकता के आसपास काम किया है और फिर उस डेटाबेस को विनिपेट करता है जब आवेदन करने के लिए कौन सी उत्तर फाइल का निर्धारण किया जाता है। निश्चित रूप से ऐसा ही कुछ लगभग किसी भी वातावरण के लिए अनुकूलित किया जा सकता है? यह मूल रूप से अपने आप को खरोंच से एमडीटी का पुनर्निर्माण कर रहा है हे
एमडीएमरा

जब भी नई मशीन की स्क्रिप्ट चलती है, तो कुछ चीजें (कुछ मामलों में) विंडोज की तरफ होनी चाहिए। मैं COULD विंडोज की ओर से चीजें शुरू करता हूं, लेकिन मुझे उस समय आने पर सामने वाले इंटरफेस के लिए एक नया वेब एप्लिकेशन सर्वर बनाने की आवश्यकता होगी, और मैं लिनक्स पर PHP के साथ C # (या जो कुछ भी) विंडोज पर कर रहा हूं, उसके लिए बहुत अधिक आरामदायक हूं । लेकिन जैसा मैंने कहा, अगर मुझे करना है, तो मुझे करना होगा।
मैट सिमंस

2

आप विंडोज़ होस्ट पर पॉवरशेल स्क्रिप्ट को दूरस्थ रूप से निष्पादित करने के लिए एनआरपीई जैसे कुछ का उपयोग कर सकते हैं। आप nrpe द्वारा अपेक्षित रूप से बाहर निकलने के कोड वापस करने के लिए अपनी शक्तियाँ स्क्रिप्ट को संशोधित करना चाह सकते हैं, लेकिन ऐसा कोई कारण नहीं है कि आप अपने linux होस्ट पर अपनी स्क्रिप्ट से check_nrpe को कॉल न कर सकें।


1
यह स्वादिष्ट काउंटर-सहज ज्ञान युक्त है। मुझें यह पसंद है। यह एक प्रमुख हैक है, लेकिन फिर भी, रचनात्मक! धन्यवाद।
मैट सीमन्स

2

काउंटर-सहज ज्ञान युक्त हैक्स के विषय पर , क्या आपने कंटीन्यूअस इंटीग्रेशन सॉफ़्टवेयर को क्रॉस-प्लेटफ़ॉर्म ऑर्केस्ट्रेशन टूल के रूप में दुरुपयोग करने पर विचार किया है?

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


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.