फंक्शन ब्लॉक FS_SHELL

फंक्शन ब्लॉक FS_SHELL एक या अधिक दूरस्थ कमांडों को इंटरैक्टिव शेल में निष्पादित करता है।

सावधान: सिस्टम कमांड दूरस्थ सिस्टम को खतरे में डाल सकते हैं या नुकसान पहुंचा सकते हैं। इसके अलावा, मौजूदा फाइलों को बिना किसी चेतावनी के ओवरराइट किया जा सकता है।

फाइल सिस्टम को पहले FS_INIT का उपयोग करके इनिशियलाइज़ करना चाहिए। सभी ऑपरेशन्स एसिंक्रोनस रूप से हर स्टोरेज मीडिया के लिए होते हैं जो बनाई गई है।

इनपुट RUN

एक पॉजिटिव एज पर दिए गए कमांड को निष्पादित किया जाता है।

इनपुट DEV

यह उस डिवाइस को Define करता है, जिससे फाइलों तक पहुंचा जा सकता है। डिवाइस को प्रोजेक्ट के लिए उपयोग किया जाता है और इसे प्रोजेक्ट एक्सटर्नल स्टोरेज के तहत कॉन्टेक्स्ट मेनू में मैनेज किया जा सकता है।

इनपुट PATH

यह स्टोरेज मीडिया पर डायरेक्टरी तक की पथ को Define करता है। पथ एक यूनिक्स फाइल पथ के समान होता है, जो UTF-8 फॉर्मेट में होता है, अगर यह सपोर्ट किया जाता है। पथ को इस प्रकार दर्शाया जाता है:

Folder/Subfolder

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

इनपुट CMD

यह सभी कमांडों को Define करता है जो निष्पादित की जानी चाहिए। सभी कमांडों को एक लाइन एंड के साथ टर्मिनेट करना चाहिए। जैसे कि: "ls\n". अगर कोई लाइन एंड का उपयोग नहीं किया जाता है, तो कमांड शायद निष्पादित नहीं होगी। कमांडों को सर्वर से फीडबैक मिलने के बाद लाइन बाई लाइन निष्पादित किया जाएगा।

सभी कमांडों के निष्पादन के बाद, अंत में एक "exit\n" भेजा जाना चाहिए, ताकि कनेक्शन तुरंत समाप्त हो और मान वापस लौटाए जाएं। इसके बाद कोई और कमांड नहीं भेजना चाहिए, अन्यथा OUTPUT ERROR को TRUE सेट किया जाएगा।

नोट: अगर कनेक्शन अप्रत्याशित रूप से समाप्त हो जाता है और कोई कमांड भेजी नहीं जाती है, तो OUTPUT ERROR को TRUE सेट किया जाएगा।

इनपुट PTY

यह कंसोल टाइप (Pseudo-Terminal) को Define करता है। कुछ डिवाइस के लिए यह पैरामीटर अनिवार्य हो सकता है। उदाहरण: "vanilla", "exec", "vt100", "vt102", "ansi", "xterm" आदि। अगर कोई मान Define नहीं किया जाता है, तो "vanilla" का उपयोग किया जाएगा।

मान "exec" SSH कमांड के माध्यम से ऑपरेटिंग सिस्टम द्वारा अनुरोध को निष्पादित करता है। इस प्रकार अधिक आधुनिक विधियाँ उपयोग की जाती हैं। हालांकि, यह विधि कुछ असरदार नहीं होती है। इनपुट ENV कनेक्शन से पहले सेट किया जाता है, इसलिए इसे शायद इग्नोर किया जाएगा। इनपुट SIZE इस विधि में इग्नोर किया जाएगा।

अगर अतिरिक्त SSH पैरामीटर पास किए जाने चाहिए, तो उन्हें "exec" के बाद एक नए लाइन में जोड़ा जा सकता है। पैरामीटर case-sensitive होते हैं और नीचे दिए गए उदाहरण के अनुसार दिए जाते हैं। यह उदाहरण पुराने डिवाइसों के लिए RSA एल्गोरिदम को सक्रिय करता है।

exec
HostKeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa

निम्नलिखित पैरामीटर उपलब्ध हैं:

exec के लिए SSH पैरामीटर उदाहरण मान
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
ConnectTimeout 10
ServerAliveInterval 30
ServerAliveCountMax 3

नोट: अधिक विवरण के लिए बाहरी दस्तावेज़ देखें: https://linux.die.net/man/5/ssh_config (अंग्रेजी)

इनपुट ENV

यह सक्रिय एन्वायरनमेंट वेरिएबल्स को Define करता है। कई वेरिएबल्स को Define करने के लिए, हर लाइन पर एक Define किया जा सकता है। उदाहरण:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

इनपुट SIZE

यह टर्मिनल के साइज को Define करता है। डिफ़ॉल्ट रूप से, यह चरित्रों में दिया जाता है, लेकिन इसे पिक्सेल में भी Define किया जा सकता है। जैसे: "80x25" या "640x480px". अगर कोई मान Define नहीं किया जाता है, तो "80x25" का उपयोग किया जाएगा।

इनपुट RECV_PT

यह हर कमांड के लिए डेटा प्राप्त करने के लिए एक टाइमआउट को Define करता है, जो T# फॉर्मेट में होता है। अगर कोई टाइमआउट Define नहीं किया जाता है, तो T#150ms का उपयोग किया जाएगा। अगर यह मान पर्याप्त उच्च नहीं है, तो डेटा आउटपुट के दौरान कई कमांडों को निष्पादित किया जा सकता है।

इनपुट TIMEOUT

यह सभी कमांडों के निष्पादन के लिए एक टाइमआउट सेट करता है, जो T# फॉर्मेट में होता है। इस टाइमआउट को प्राप्त करने के बाद कनेक्शन समाप्त हो जाएगा और मान वापस लौटाए जाएंगे। इस दौरान ERROR को TRUE सेट किया जाएगा। टाइमआउट को कनेक्शन स्थापित होने और ऑथेंटिकेशन के बाद मूल्यांकन किया जाता है। अगर इनपुट PTY को "exec" पर सेट किया गया है, तो निष्पादन समय पूरे अवधि पर मूल्यांकन किया जाएगा। अगर कोई टाइमआउट Define नहीं किया जाता है, तो T#300s का उपयोग किया जाएगा।

आउटपुट DONE

आउटपुट सफलता पर एक पल्स वापस लौटाता है, ताकि अगला ऑपरेशन निष्पादित हो सके। पल्स प्रक्रिया समाप्त होने पर होता है, भले ही कोई त्रुटि हुई हो या नहीं।

आउटपुट RETURN

यह सफल निष्पादन पर कमांड के रिटर्न वैल्यू को वापस लौटाता है। मान को बाद में उपयोग करने के लिए स्टोर किया जाता है।

नोट: ध्यान दें कि कंसोल आउटपुट को फॉर्मेट करता है। इस प्रकार, यह कंट्रोल चरित्र या बाइनरी डेटा भी शामिल कर सकता है।

आउटपुट RETERR

यह त्रुटिपूर्ण निष्पादन पर कमांड के रिटर्न वैल्यू को वापस लौटाता है। SSH में इसे STDERR भी कहा जाता है। मान को बाद में उपयोग करने के लिए स्टोर किया जाता है।

नोट: ध्यान दें कि कंसोल आउटपुट को फॉर्मेट करता है। इस प्रकार, यह कंट्रोल चरित्र या बाइनरी डेटा भी शामिल कर सकता है।

आउतपुट ERROR

यह त्रुटि के मामले में एक टेक्स्ट के साथ एक एरर मेसेज वापस लौटाता है। यह FALSE होता है, अगर कोई त्रुटि नहीं हुई है। स्थिति को बाद में उपयोग करने के लिए स्टोर किया जाता है।

संभावित कारण:

  • स्टोरेज मीडिया की सेवा शुरू नहीं की गई थी।
  • स्टोरेज को इनिशियलाइज़ नहीं किया गया था।
  • लॉगिन क्रेडेंशियल्स अमान्य थे।
  • दूरस्थ सर्वर तक पहुंचा नहीं जा सका।
  • स्टोरेज मीडिया मौजूद नहीं थी।
  • दी गई पथ अमान्य थी।
  • स्टोरेज मीडिया पर लिखा नहीं जा सका।
  • स्टोरेज में कोई स्पेस नहीं बचा या स्टोरेज राइट प्रोटेक्टेड था।
  • सभी कमांडों को भेजने से पहले कनेक्शन अप्रत्याशित रूप से समाप्त हो गया।
  • डिफ़ाइन किया गया टाइमआउट प्राप्त हुआ।

देखें भी