我有點卡在這裏我想ssh進入一臺機器,然後運行大約3個命令,這些命令基本上是設置命令,然後我想用該機器的env變量返回到我的機器關於使用perl運行多個ssh命令
像
setup1
setup2
setup3
env > envtext.txt.
return back
這一切我都得在Perl做
我試圖像 system("ssh @machine command1 && command 2")
行不通的命令
有沒有像?
system("ssh @machine command1 -cmd command 2 -cmd command 3")
如果不是比什麼是做 喜歡做一個shell腳本,然後調用它或我能做到這一點在Perl本身沒有任何shell腳本的最佳方式?
代碼
#!/usr/bin/perl -w
use Net::SSH::Perl;
my $host = "address";
my $user = "name";
my $password = "password";
- 建立一個新的連接
my $ssh = Net::SSH::Perl->new($host,
debug=>0,
identity_files => ['path to key'],
options=> ["StrictHostKeyChecking no"]
#interactive => yes,
);
- 認證
$ssh->login($user,$password);
- 執行命令
my($stdout, $stderr, $exit) = $ssh->cmd("env");
print $stdout;`
錯誤它給的權限是在ssh.pl行否認25
謝謝
我能夠發送命令,但我現在的問題是,我得到相同的env變量文件,setup1給出一個文件設置2給出另一個env變量文件都相同,但兩者應該是不同的。 – user3338189
我不太理解你的評論,但這聽起來像是一個不同的問題。由於您無法將多個命令發送到遠程服務器,因此您是否介意接受此答案並針對您的下一個問題詢問新問題? – smammy
我的意思是說,我得到的env變量文件是setup1之後的那個文件,而不是setup2之後我已經在setup2之後保留了env> envtest.txt,但是仍然得到了具有第一個文件的env變量的文件 – user3338189