SSH में लॉगिन करने और प्रोग्राम चलाने के लिए सिंगल कमांड?


58

क्या SSH के माध्यम से किसी दूरस्थ सर्वर पर लॉगिन करने और दूरस्थ लॉगिन शेल पर प्रोग्राम चलाने के लिए एकल कमांड को संरचित करने का कोई तरीका है?

ओपनएसएसएच मैनुअल में, यह पढ़ता है "यदि कमांड निर्दिष्ट है, तो इसे लॉगिन शेल के बजाय रिमोट होस्ट पर निष्पादित किया जाता है।" इसलिए, उदाहरण के लिए, ssh user@server mailदूरस्थ सर्वर में प्रवेश करेगा, मेलबॉक्स स्थिति प्रदर्शित करेगा, और फिर आपको स्थानीय शेल पर लौटाएगा। क्या मेल स्टेटस प्रदर्शित करने के बाद रिमोट शेल पर बने रहने का कोई तरीका है?

इसके अलावा, ssh user@server [command]अगर कमांड एक प्रोग्राम है, उदाहरण के लिए vim या mutt , काम नहीं करता है। क्या रिमोट शेल में लॉगिन करने और प्रोग्राम के दौरान रिमोट शेल में रहने के दौरान एक प्रोग्राम चलाने का एक तरीका है और प्रोग्राम से बाहर निकलने के बाद, केवल अंत में एक विशिष्ट logoutकमांड (सामान्य एसएसएच सत्र की तरह) पर बाहर निकल रहा है ?

मैं अंततः स्थानीय .bashrc में एक उपनाम के रूप में इस तरह की कमांड को सक्षम करने में सक्षम होना चाहूंगा, ताकि इसे वांछित रूप से जल्दी से चलाया जा सके। एक उदाहरण एसएसएच के माध्यम से एक रिमोट सर्वर पर लॉगिन करना और ईमेल पढ़ने या भेजने के लिए रिमोट सर्वर पर म्यूट को खोलना होगा।


मेल स्थिति प्रदर्शित करने के बाद दूरस्थ शेल पर बने रहने का क्या मतलब है? मेल कमांड चलाने के बाद ssh करने के बराबर नहीं होगा ssh remote@server mail ; ssh remote@server:? इसके अलावा किसी भी दूरस्थ रूप से निष्पादित कमांड के लिए टर्मिनल की जरूरत नहीं बची होगी / ssh अधिकार पर काम करेगा?
mcc

वैसे, यह कमांड चलाने के लिए काम करता है और फिर रिमोट शेल प्राप्त करता है, लेकिन यह एक SSH कनेक्शन को खोलने और कमांड को चलाने और SSH कनेक्शन को बंद करने और फिर एक और SSH कनेक्शन को खोलने के द्वारा करता है। क्या यह पहला एकल कनेक्शन के साथ करने का कोई तरीका है? इसके अलावा, यह अभी भी कमांड को प्रोग्राम चलाने में सक्षम नहीं करता है।
user981178

जवाबों:


90

क्या आपने कोशिश की है ssh -t user@server "mail && bash"(या bashजो भी खोल आपको पसंद है उसे बदलें )

-tआदेश बैश एक इंटरैक्टिव शेल के रूप में उपयोग करने के लिए के लिए एक छद्म tty बनाने के लिए आवश्यक है।


1
हालाँकि, मैं मानता हूँ, मैं शायद muttएक tmuxया एक के अंदर चलाने के लिए पसंद करेंगे screen, और फिर मैं संलग्न कर सकता हूँ और इच्छा पर पुनर्विचार कर सकता हूँ, साथ ही मैं जितने अतिरिक्त गोले चाह सकता हूँ, उतना चला सकता हूँ।
jsbillings

1
खैर, मैं इस आदेश के साथ विभिन्न व्यवहार पा रहा हूं। ऊपर (उत्तर में) के रूप में उपयोग किया जाता है, यह अभी भी केवल मेलबॉक्स स्थिति प्रदर्शित करता है और फिर लॉग आउट करता है, लेकिन अब यह भी प्रदर्शित करता है कि कनेक्शन बंद है। ऊपर के रूप में उपयोग किया जाता है, लेकिन नैनो के साथ, उदाहरण के लिए, मेल के बजाय, यह एक नैनो सत्र खोलता है और फिर बाहर निकलने पर दूरस्थ बैश शेल पर वापस लौटता है, जिसके exitबजाय इसके साथ बाहर निकलना पड़ता है logout। मैं इसे अभी तक म्यूट (या समान) के साथ परीक्षण करने में असमर्थ हूं।
user981178

क्या -tविकल्प किसी भी प्रकार की सुरक्षा चिंताओं का उत्पादन करता है ? मैंने इससे पहले इसका इस्तेमाल नहीं किया है।
user981178

जहां तक ​​मुझे पता है -t किसी भी सुरक्षा चिंताओं का परिचय नहीं देता है। क्या आपने &&एक के साथ बदलने की कोशिश की है ;?
Brm

कोई भी आदेश जो गैर-शून्य निकास स्थिति के साथ बाहर निकलता है, शेल लॉजिक के कारण दूसरी कमांड नहीं चल पाएगी।
jsbillings
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.