/ / Ssh कमांड चलाना और कनेक्शन रखना - ssh

एसएसएच कमांड चलाना और कनेक्शन रखना - एसएसएच

क्या रिमोट टर्मिनल तक पहुंचने से पहले एक कमांड निष्पादित करने का एक तरीका है

जब मैं यह आदेश दर्ज करता हूं:

bash $> ssh user@server.com "ls"

Ls कमांड को दूरस्थ कंप्यूटर पर निष्पादित किया जाता है, लेकिन ssh क्विट करता है और मैं अपने दूरस्थ सत्र में जारी नहीं रख सकता।

क्या कनेक्शन रखने का एक तरीका है? कारण जो मैं यह पूछ रहा हूं वह यह है कि मैं दूरस्थ .bashrc फ़ाइल को संशोधित किए बिना ssh सत्र के लिए एक सेटअप बनाना चाहता हूं।

उत्तर:

उत्तर № 1 के लिए 1

आप बैश की इनिट फाइल पर प्रोसेस सबसेंसेशन का उपयोग करके देख सकते हैं। नीचे दिए गए उदाहरण में, मैं एक फ़ंक्शन को परिभाषित करता हूं myfunc:

myfunc () {
echo "Running myfunc"
}

जो मैं एक अच्छी तरह से बच एक लाइनर में बदल गूंज में <(...) निर्माण प्रक्रिया के लिए निर्वाह के लिए --init-file बैश का तर्क:

$ ssh -t localhost "bash --init-file <( echo "myfunc() { echo "Running myfunc" ; }" )  "
Password:
bash-3.2$ myfunc
Running myfunc
bash-3.2$ exit

ध्यान दें कि एक बार कनेक्ट होने के बाद, मेरी .bashrc खट्टा नहीं है लेकिन myfunc एक इंटरैक्टिव सत्र में परिभाषित और उचित रूप से प्रयोग करने योग्य है।

यह अधिक जटिल बैश कार्यों के लिए थोड़ा मुश्किल साबित हो सकता है, लेकिन यह काम करता है।


जवाब के लिए 2 № 2

मैं छद्म ट्टी के आवंटन को बाध्य करूंगा और उसके बाद बैश चलाऊंगा ls आदेश:

syzdek@host1$ ssh -t host2.example.com "ls -l /dev/null;   bash"
-rwxrwxrwx    1 root     other          27 Apr  1  2005 /dev/null
bash-4.1$