
ArcGIS Enterprise जियोप्रोसेसिंग सेवा जो कमांड निष्पादन के लिए एक Python टूलबॉक्स प्रकाशित करती है।
यह रिपॉज़िटरी एक ArcGIS geoprocessing service definition शामिल करती है जो एक Python toolbox को command-execution task के रूप में प्रकाशित करती है। यह अधिकृत security testing के लिए है।
इस सेवा को उन सिस्टम पर प्रकाशित या उपयोग न करें जहाँ आपके पास स्पष्ट प्राधिकरण नहीं है। एक geoprocessing service ArcGIS Server service account के रूप में server-side code चलाती है, इसलिए यह प्रोजेक्ट होस्ट के लिए web-shell-जैसा इंटरफ़ेस बना सकता है।
मुख्य artifact ArcGIS_Shell है, जो एक इनपुट पैरामीटर वाला Python toolbox task है:
command
जब कार्य चलता है, तो सर्वर उस कमांड को ऑपरेटिंग सिस्टम शेल के माध्यम से निष्पादित करता है और सामान्य कंसोल आउटपुट को ArcGIS कार्य परिणाम के माध्यम से लौटाता है।
रेपो में दो पूर्व-निर्मित ArcGIS सेवा परिभाषा फ़ाइलें शामिल हैं:
ArcGIS_Shell_10.9.1_and_earlier.sd
ArcGIS_Shell_11_or_later.sd
इसमें निकाले गए सेवा-परिभाषा फ़ोल्डर भी शामिल हैं:
ArcGIS_Shell_10.9.1_and_earlier/
ArcGIS_Shell_11_or_later/
ये फ़ोल्डर उन फ़ाइलों को समाहित करते हैं जिन्हें ArcGIS .sd संग्रहों में पैकेज करता है, जिनमें एम्बेडेड ArcGIS_Shell.pyt फ़ाइलें भी शामिल हैं। सेवा परिभाषा बदलते समय निकाले गए फ़ोल्डरों को संपादित करें, फिर package_sd.py के साथ .sd फ़ाइलों को पुनः बनाएँ।
ArcGIS सेवा परिभाषा (.sd) एक पैकेज्ड डिप्लॉयमेंट आर्टिफ़ैक्ट है। इसमें सेवा मेटाडेटा, कॉन्फ़िगरेशन, टूलबॉक्स या मैप संसाधन, और ArcGIS Server द्वारा सेवा प्रकाशित करने के लिए आवश्यक सहायक फ़ाइलें शामिल होती हैं।
इस रेपो में, प्रत्येक .sd एक 7-Zip संग्रह है जो ArcGIS-संगत संपीड़न सेटिंग्स का उपयोग करता है:
-ms=off
-m0=LZMA:d=14
दो सेवा-परिभाषा फ़ोल्डर मुख्य रूप से ArcGIS पैकेजिंग संस्करण के आधार पर भिन्न होते हैं:
10.9.1 and earlier: p20 paths, offlineSDVersion10x, ArcGIS 2.9 schema
11 or later: p30 paths, offlineSDVersion11, ArcGIS 3.1 schema
एम्बेडेड Python टूलबॉक्स लॉजिक दोनों में समान है।
ArcGIS जियोप्रोसेसिंग सेवाएँ सामान्यतः HTTP के माध्यम से GIS विश्लेषण वर्कफ़्लो को उजागर करने के लिए उपयोग की जाती हैं। एक सामान्य वर्कफ़्लो है:
वैध उदाहरणों में फ़ीचर क्लिपिंग, नेटवर्क विश्लेषण चलाना, रास्टर प्रोसेसिंग, रिपोर्ट जनरेट करना, और बैच GIS रूपांतरण करना शामिल है।
महत्वपूर्ण सुरक्षा विशेषता यह है कि जियोप्रोसेसिंग कार्य सर्वर-साइड Python निष्पादित करते हैं। यदि कोई प्रकाशित कार्य उपयोगकर्ता-नियंत्रित इनपुट स्वीकार करता है और इसे subprocess.run(..., shell=True) जैसे खतरनाक प्रिमिटिव्स में पास करता है, तो जियोप्रोसेसिंग कार्य एक कमांड-निष्पादन इंटरफ़ेस बन जाता है। यही इस प्रोजेक्ट में प्रदर्शित किया गया है।
Shell कार्य command नामक एक स्ट्रिंग पैरामीटर स्वीकार करता है। Python टूलबॉक्स उस कमांड को ArcGIS Server होस्ट पर चलाता है और कार्य परिणाम में stdout/stderr लौटाता है।
इसका अर्थ है कि ArcGIS जियोप्रोसेसिंग सेवाओं को प्रकाशित करने या प्रशासित करने की अनुमति रखने वाला एक ऑपरेटर सामान्य ArcGIS कार्यक्षमता के माध्यम से वेब-शेल जैसी सेवा बना सकता है। कमांड ArcGIS Server प्रोसेस अकाउंट के सुरक्षा संदर्भ में चलता है।
सेवा ArcGIS Uploads क्षमता को भी सक्षम करती है। यह सेवा अपलोड एंडपॉइंट्स को उजागर करती है:
/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads
/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/upload
ArcGIS Server द्वारा अपलोड को साइट सिस्टम निर्देशिका में संग्रहीत किया जाता है, आमतौर पर इस तरह के पथ के अंतर्गत:
<arcgisserver>/directories/arcgissystem/arcgisuploads/<itemID>
सटीक पथ ArcGIS Server निर्देशिका कॉन्फ़िगरेशन पर निर्भर करता है। व्यवस्थापक अपलोड किए गए आइटम को इसके माध्यम से देख सकते हैं:
https://<server>/arcgis/admin/uploads?f=pjson
arcgissystem में फ़ाइलों को मैन्युअल रूप से संशोधित या हटाएँ नहीं। REST या Administrator Directory के माध्यम से अपलोड आइटम हटाएँ।
लक्ष्य ArcGIS संस्करण से मेल खाने वाली .sd फ़ाइल का उपयोग करें:
ArcGIS_Shell_10.9.1_and_earlier.sd
ArcGIS_Shell_11_or_later.sd
विशिष्ट Server Manager प्रवाह:
ArcGIS Server Manager खोलें:
https://<server>/arcgis/manager
ऐसे खाते से साइन इन करें जिसे सेवाएँ प्रकाशित करने का अधिकार है। इसमें आमतौर पर portaladmin शामिल होता है।
Services पर जाएँ।
Publish Service पर क्लिक करें।
ArcGIS संस्करण के लिए उपयुक्त .sd फ़ाइल अपलोड करें। Next पर क्लिक करें।
"Specify properties for your new service" पृष्ठ पर, यदि चाहें तो सेवा का नाम बदलें। Next पर क्लिक करें।
"Share your services with" पृष्ठ पर, आपको किसी भी बॉक्स को चेक करने की आवश्यकता नहीं है। Publish पर क्लिक करें।
सेवा स्वचालित रूप से शुरू हो जाती है। सेवा के नाम पर क्लिक करें, फिर Capabilities पर, फिर REST URL पर।
सेवा को हटाने के लिए, सेवा के नाम के बगल में "X" पर क्लिक करें।
पहले से बनी .sd फ़ाइलों में पहले से शामिल हैं:
"capabilities": "Uploads"
वे परीक्षण के लिए व्यापक अपलोड सेटिंग्स भी शामिल करते हैं:
"maxUploadFileSize": "2048",
"allowedUploadFileTypes": "<broad explicit extension list>"
maxUploadFileSize MB में है। एक्सटेंशन सूची जानबूझकर मूल्यांकन कार्य के लिए व्यापक रखी गई है, लेकिन यह अभी भी एक स्पष्ट allowlist है, न कि वास्तविक "सब कुछ अनुमति दें" वाइल्डकार्ड।
प्रकाशित करने के बाद, ArcGIS REST Services Directory में सेवा खोलें:
https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer
यदि सेवा किसी फ़ोल्डर के अंदर प्रकाशित है, तो फ़ोल्डर का नाम शामिल करें:
https://<server>/arcgis/rest/services/<folder>/ArcGIS_Shell/GPServer
कार्य खोलें:
https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/Shell
Execute Task पर क्लिक करें।
अपना कमांड सेट करें और फ़ॉर्म सबमिट करें। कार्य परिणाम में कमांड आउटपुट होना चाहिए।
आउटपुट JSON प्रारूपित है, इसलिए न्यूलाइन्स एस्केप किए गए हैं (\r\n)। आपको मल्टी-लाइन आउटपुट को पोस्ट-प्रोसेस करना होगा।
चूँकि कार्य ऑपरेटिंग सिस्टम शेल का उपयोग करता है, शेल बिल्ट-इन्स काम करते हैं:
dir
echo test
whoami /groups
Linux लक्ष्यों पर, Linux कमांड का उपयोग करें:
id
uname -a
pwd
uploads संसाधन खोलें:
https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads
Upload Item पर क्लिक करें, या सीधे यहाँ जाएँ:
https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/upload
REST वेब GUI को अपलोड सक्षम होने पर फ़ाइल पिकर दिखाना चाहिए।
फ़ाइल चुनने और अपलोड सबमिट करने के लिए फ़ॉर्म का उपयोग करें। प्रतिक्रिया में एक itemID शामिल होता है।
इसके साथ अपलोड किए गए आइटम का निरीक्षण करें:
https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/<itemID>
अपलोड किए गए आइटम को इसके साथ हटाएँ:
https://<server>/arcgis/rest/services/ArcGIS_Shell/GPServer/uploads/<itemID>/delete
उस पृष्ठ पर REST वेब फ़ॉर्म का उपयोग करके delete ऑपरेशन सबमिट करें।
अपलोड की गई फ़ाइलें ArcGIS Server सिस्टम डायरेक्टरी क्लीनअप नीति के अधीन भी होती हैं। डिफ़ॉल्ट सिस्टम डायरेक्टरी क्लीनअप आयु सामान्यतः 24 घंटे होती है, लेकिन प्रशासक इसे बदल सकते हैं।
ArcGIS सेवा अपलोड को ArcGIS Server साइट सिस्टम डायरेक्टरी में संग्रहीत करता है, न कि सेवा फ़ोल्डर में और न ही .sd पैकेज के अंदर। सामान्य स्थान यह है:
<server-directories-root>/arcgissystem/arcgisuploads/<itemID>/
सामान्य Windows लेआउट:
C:\arcgisserver\directories\arcgissystem\arcgisuploads\<itemID>\
सामान्य Linux लेआउट:
/arcgis/server/usr/directories/arcgissystem/arcgisuploads/<itemID>/
ये केवल उदाहरण हैं। सटीक पथ इस बात पर निर्भर करता है कि ArcGIS Server साइट निर्देशिकाएँ कैसे कॉन्फ़िगर की गई थीं।
सटीक डिस्क पथ खोजने के लिए, Administrator Directory खोलें:
https://<server>/arcgis/admin/uploads?f=pjson