एक विशिष्ट 'स्क्रीन' सत्र के साथ SSH कनेक्शनों को ऑटो-फिर से जोड़ना


10

मेरे पास आमतौर पर कई टर्मिनल विंडो हैं, जिनमें से प्रत्येक एक दूरस्थ सर्वर के लिए ssh के माध्यम से जुड़ा हुआ है। प्रत्येक विंडो में मैं डिस्कनेक्ट होने की स्थिति में इंटरएक्टिव प्रक्रियाओं की दृढ़ता सुनिश्चित करने के लिए ग्नू स्क्रीन प्रोग्राम का उपयोग करके काम करता हूं।

वर्तमान में, जब भी ssh कनेक्शन ड्रॉप हो जाता है (जैसे कि जब मैं अपने क्लाइंट कंप्यूटर को रात भर सोने के लिए डालता हूं) तो मुझे मैन्युअल रूप से और प्रत्येक विंडो के अंदर ssh सत्र को फिर से शुरू करना होगा, और फिर प्रत्येक विंडो में विशिष्ट स्क्रीन सत्र (जैसे "स्क्रीन) को फिर से शुरू करना होगा। आर 3453 "एक खिड़की में," स्क्रीन -r 3462 "अन्य में)

क्या इसे स्वचालित करने का एक सुंदर तरीका है? विशेष रूप से:

  • इंटरनेट कनेक्शन का पता चलते ही ssh सत्र फिर से कनेक्ट करें

  • जैसे ही ssh reconnects टर्मिनल विंडो के लिए विशिष्ट स्क्रीन इंस्टेंस चलाएं

इस पर किसी भी सुझाव के लिए धन्यवाद

जवाबों:


10

आप इसे चला सकते हैं: ssh -t hostname screen -r 3453पुन : कनेक्ट करने के लिए। यदि आप इसे एक लूप में करना चाहते हैं तो मैं एक स्क्रिप्ट में निम्नलिखित का उपयोग करता हूं।

while true; do
    ssh -t -o BatchMode=yes eeepc-rsi "screen -r 3453"
    sleep 2
done

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


धन्यवाद! वास्तव में "-ओ बैचमैड = हां" किसके लिए है?
जीजे

यह आपको पासवर्ड के लिए संकेत नहीं देगा। 'Man ssh_config' से: "पासफ़्रेज़ / पासवर्ड क्वेरी को अक्षम किया जाएगा। यह विकल्प स्क्रिप्ट और अन्य बैच नौकरियों में उपयोगी है, जहाँ कोई उपयोगकर्ता पासवर्ड की आपूर्ति करने के लिए मौजूद नहीं है।" यदि आपके पास ssh-keys पहले से ही सेटअप है तो इसका उपयोग करें।
जेसन एक्सलसन

5

बैश लूप्स को हैक करने की आवश्यकता नहीं है। आपको ऑटोशो में देखने की जरूरत है । मैं यह बहुत अपने आप उपयोग नहीं किया है, लेकिन मैं समझता हूँ कि आप बस की जगह है sshके साथ autosshअपने आदेश में।

संपादित करें: वास्तव में, ऑटोसह एक स्क्रिप्ट के साथ आता है जिसे कहा जाता है rscreenकि यह वास्तव में इस उद्देश्य के लिए डिज़ाइन किया गया है।

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