मेरे पास एक सर्वर है, जिसका नाम है gamma
, लगातार काम पर चलना और चलना। कभी-कभी मैं इसे घर से कनेक्ट करता हूं, जिस स्थिति में मैं सार्वजनिक आईपी पते का उपयोग करता हूं 55.22.33.99
। कभी कभी, मैं इसे करने के लिए कनेक्ट, जब मैं काम पर हूँ, और नहीं बल्कि उछाल की तुलना में मेरी पैकेट अनावश्यक रूप से चारों ओर, मैं स्थानीय आईपी पते के माध्यम से कनेक्ट 192.168.1.100
।
फिलहाल, मैंने उन्हें दो अलग-अलग प्रविष्टियों में विभाजित किया है ~/.ssh/conf
Host gamma-local
HostName 192.168.1.100
Port 22
User andreas
Host gamma-remote
HostName 55.22.33.99
Port 12345
User andreas
इसलिए, अगर मैं काम पर हूं, तो मुझे लिखना होगा ssh gamma-local
और मैं अंदर हूं; अगर मैं घर पर हूं (या दुनिया में कहीं भी), मैं दौड़ता हूं ssh gamma-remote
।
सर्वर से कनेक्ट करते समय, मुझे नहीं लगता कि मैं जहां हूं, उसके आधार पर एक अलग नाम टाइप करना होगा, मैं चाहता हूं कि यह हिस्सा अपने आप हो जाए; उदाहरण के लिए, कुछ मामलों में मेरे पास स्वचालित स्क्रिप्ट हैं जो कनेक्ट करती हैं कि मुझे नहीं पता कि मैं कहां हूं।
नहीं है एक सवाल है कि एक बैश स्क्रिप्ट का उपयोग करके इस समस्या का हल "कोशिश" करने के लिए पहले स्थानीय एक से कनेक्ट करने, और अगर यह कनेक्ट नहीं करता है, दूरदराज के आईपी पते से कनेक्ट करने का प्रयास करें। यह अच्छा है, लेकिन (1) अक्षम लगता है (विशेष रूप से कभी-कभी आपको समय-समय पर कनेक्शन के लिए "इंतजार" करना पड़ता है क्योंकि वे हमेशा एक त्रुटि तुरंत वापस नहीं भेजते हैं) और (2) के लिए स्क्रिप्ट के चारों ओर बैश और लैगिंग की आवश्यकता होती है।
क्या इसे प्राप्त करने का कोई वैकल्पिक तरीका है जो बैश स्क्रिप्ट के उपयोग पर निर्भर नहीं करता है, न ही "परीक्षण" यह देखने के लिए कि क्या कनेक्शन पहले काम करता है?
/etc/hosts
हासिल करने के लिए या एसएसएच कॉन्फिग फाइल के साथ फील कर सकता है ? या शायद "डिटेक्ट" करने का कोई तरीका है कि आप वर्तमान में किस लैन से जुड़े हैं?