2012-07-27 23 views
24

में उपयोग करता हूं तो echo "^]" के साथ एक scpi (telnet) सत्र बंद नहीं कर सकता echo-e "\ 029" का उपयोग या तो काम नहीं करता है। लेकिन अगर strg + alt gr + ] सीधे टर्मिनल सत्र में -> यह काम करता है।जब मैं इसे स्क्रिप्ट

मुझे अपने प्रश्न को अधिक ठोस रूप से पूछना है:
मैं टेलनेट/एससीपीआई के माध्यम से एक आरएफ जनरेटर (AGILENT) को जोड़ता हूं।
मैं सत्र के अंत में टर्मिनल और प्रेस पर इस मैनुअल करते हैं CTRL + एएलटी जीआर + ] के लिए '^]' तो ठीक से SCPI सत्र बंद है और मैं टेलनेट सत्र बंद करने के लिए quit टाइप कर सकते हैं अच्छी तरह।
आरएफ जनरेटर के प्रदर्शन पर कोई त्रुटि संदेश नहीं है। तो यह होना चाहिए।

यदि मैं स्क्रिप्ट के माध्यम से ऐसा करता हूं तो एससीपीआई सत्र ब्रेक सिग्नल स्थिति '^]' को पहचानने के लिए प्रतीत नहीं होता है और इसे स्क्रिप्ट (टेलनेट और एसपीपीआई) के अंत के बाद बंद करने के लिए मजबूर किया जाएगा। -> संदेश: "विदेशी होस्ट द्वारा डिस्कनेक्ट"। 192,168.10.66 भागने चरित्र से जुड़ा है '^]' -> यह वह जगह है:,> "अवैध हैडर" आदि

के बाद सफल कनेक्शन दिखाई देता है - दुर्भाग्य से, मैं आरएफ जनरेटर के प्रदर्शन पर त्रुटि संदेश मुद्दे पर इंगित करें। टर्मिनल में मैन्युअल प्रविष्टि सही तरीके से काम करती है, स्क्रिप्ट काम नहीं करती है।

function getIDNMessage() 
{ 
    (  
     echo open $1 $2 
     sleep 1 
     echo "*IDN?" 
     sleep 1 
     echo –e "\029"   # or echo “^]” does not work well 
     sleep 1 
     echo "quit\r" 
     sleep 1 
    ) | telnet > scpi_telnet.log 2>&1 
} 

getIDNMessage 192.168.10.66 7777  
+1

क्यों न केवल 'बाहर निकलें'? –

+1

मुझे यहां कोई प्रश्न नहीं दिख रहा है। –

+1

ऐसा प्रतीत होता है कि एसपीपीआई के पास एक करीबी कमांड (* prefix_close *) है, लेकिन यह मुझे आश्चर्य नहीं करेगा अगर कनेक्शन बंद करना एक ही प्रभाव होगा (केवल स्क्रिप्ट के अंत से गिरना होगा)। स्टार्टअप पर, टेलनेट शायद जांचता है कि क्या स्टडीन एक टीटीआई है (उदाहरण के लिए आईएसी डीओ/डॉन इको की आवश्यकता है) सामान्य टेलनेट गैर-मानक पोर्ट पर उपयोग किए जाने पर "सक्रिय" आईएसी सत्र बिल्ड-अप अक्षम करते हैं। – wildplasser

उत्तर

0

यह इतना होना चाहिए:

मेरे स्क्रिप्ट कुछ इस तरह लग रहा है। क्योंकि सर्वर पर टर्मिनल में मुद्रित ^] क्लाइंट साइड के लिए कुछ भी नहीं है। क्लाइंट को सर्वर पर प्रेषित होने से पहले इस प्रतीक को पकड़ना चाहिए और निश्चित रूप से आप इसे सर्वर पर चल रहे ते प्रोग्राम में टर्मिनल पर नहीं लिख सकते हैं।

तो आपको अन्य तरीकों से सत्र को बाधित करने की आवश्यकता है। कई विधियां हैं।

  1. आप चल रहे प्रोग्राम के अंदर हैं, तो आप सरल यह (exit खोल में या sys.exit() अजगर में या exit() कई अन्य भाषाओं में) समाप्त कर सकते हैं।
  2. यदि आप प्रोग्राम प्रवाह को नियंत्रित नहीं कर सकते हैं तो आप टर्मिनल के मालिक की प्रक्रिया को मार कर टर्मिनल बंद कर सकते हैं। आपको प्रक्रिया को ढूंढने की आवश्यकता है और फिर kill ... (... की बजाय प्रक्रिया का पीआईडी) का उपयोग करें।
  3. यदि आप ग्राहक को क्लाइंट साइड से बंद करना चाहते हैं, तो आपको वही करना होगा (kill ...) लेकिन क्लाइंट साइड पर।
111

लिनक्स पर यह वास्तव में है:

CTRL + ] तो ENTER

अंत में quit आदेश में टाइप करें।

^] 

telnet> quit 
Connection closed. 
[[email protected] ~]$ 
+7

काम किया और फिर छोड़ें टाइप करें। यह वी से बाहर निकलने से भी मुश्किल है। –

+1

'छोड़ने' टाइप करने के बजाय आप टेलनेट से बाहर निकलने के लिए 'CTRL' + 'D' (जिसका अर्थ है" स्ट्रीम का अंत ") दबा सकते हैं। – qwertz

+1

'छोड़ने' के बजाय, आप 'q' टाइप कर सकते हैं। –

15

redhat पर टेलनेट छोड़ने के लिए:
प्रकार "CTRL+5" और फिर टाइप "quit"

+0

यह काम करता है जब रिमोट होस्ट मर जाता है। महान! – LDMdev

+0

आर्क लिनक्स में भी काम किया। – gustavwiz

1

^] मतलब है ctrl + right ब्रैकेट। जैसा कि अजीब है, यह काम करता है। आपको टेलनेट प्रॉम्प्ट पर ले जाया जाएगा, जहां आप छोड़ सकते हैं।

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

यहाँ नीचे टिप्पणी के आधार पर एक सूची है: यह नहीं था Ctrl +Å मेरी डेनिश कीबोर्ड पर

Finnish, Swedish, Norwegian, Danish: ctrl + å 
French: ctrl + 6 
German: ctrl + ü 
Swiss: ctrl + ¨ 
Hungarian: ctrl + 5 
Portuguese: ctrl + ´ 
Dutch, Belgian: ctrl + $ 
Canadian French: ctrl + ç 
1

- लेकिन इसके बजाय Å के दाईं ओर करने के लिए महत्वपूर्ण है (जो एक है टोपी, एक टिल्ड और एक ऊमलायूट)

2

आदेश नीचे सत्र का प्रयोग बंद करने के लिए

  1. Ctrl +]
  2. टेलनेट>

यह Rehl और CentOS में सही काम करता है से बाहर निकलें।