मैं ऐसे एप्लिकेशन पर काम कर रहा हूं जिसे दूरस्थ सर्वर पर कमांड भेजने की आवश्यकता है। एसएसएच क्लाइंट पुस्तकालयों की पर्याप्तता के साथ आदेश भेजना काफी आसान है।प्रोग्रामिंग एसएसएच शैल सत्र प्रोग्रामेटिक रूप से कैसे प्राप्त करें?
हालांकि, मुझे प्रत्येक आदेश के बीच संरक्षित शैल स्थिति (यानी वर्तमान कार्यशील निर्देशिका, पर्यावरण चर, आदि) चाहिए। मैंने देखा है कि सभी क्लाइंट पुस्तकालय यह नहीं करते हैं। उदाहरण के लिए, निम्नलिखित कोड है कि नहीं मैं क्या चाहते हो का एक उदाहरण है:
use Net::SSH::Perl;
my $server = Net::SSH::Perl->new($host);
$server->login($user, $pass);
$server->cmd('cd /var');
$server->cmd('pwd'); # I _would like_ this to output /var
वहाँ, आदेश भेजने के बीच प्रदर्शन किया तो $server->cmd('cd /var; pwd')
तरह आदेशों के संयोजन अन्य कार्यों स्वीकार्य नहीं है हो जाएगा।
यह ठीक है जब तक आप केवल उन आदेशों को चलाते हैं जिन्हें आप जानते हैं कि आउटपुट को कैसे पार्स करना है। – Joshua
@ जोशुआ: ठीक है, मैंने बाद में पाया कि नेट :: एसएसएच :: उम्मीद कमांड के दौरान पता लगाने के लिए किसी भी तर्क का उपयोग नहीं करती है। इसमें सिर्फ एक (अनुकूलन योग्य) टाइमआउट है और मानता है कि टाइमआउट खत्म होने पर कमांड किया जाता है। पूरी तरह से अविश्वसनीय! – salva
ईडब्ल्यूडब्ल्यूडब्ल्यू। फिर आप सीधे उम्मीद में डर्न चीज लिखने के लिए अच्छा कर सकते हैं। – Joshua