2009-08-31 40 views
0

我正在寫一個Perl腳本,它將在運行Linux的計算機上聯網的PC上運行。該腳本必須向Linux機器上的一組shell腳本提供輸入並從中接收結果。我能夠輸入文件從PC複製,甚至調用Perl腳本的Linux機器上,但是當該腳本試圖通過運行.SH文件:如何使用本地Perl程序在遠程計算機上運行shell腳本?

system("./shell_script.sh"); 

它打印出以下錯誤:

'.' is not recognized as an internal or external command, operable program or batch file. 

我認爲它是試圖在Windows下執行.sh文件。那麼有沒有什麼辦法可以讓電腦告訴Linux機器,「嗨,夥計,你自己來運行」?

謝謝。

+0

的示例代碼中的一小段給周圍的系統調用某些情況下可能是有用的。 – 2009-08-31 21:14:58

+0

好主意,只需一秒鐘... – tardcaster 2009-08-31 21:23:08

回答

5

我想你想使用類似Net::SSHExpect登錄到Linux機器並運行shell腳本。 system()在本地機器上運行;它不是一種將命令發送到遠程機器的方式。

6

您可以使用Net::SSH::Perl到遠程計算機上運行命令/腳本:

use warnings; 
use strict; 

use Net::SSH::Perl; 

my $command = "command"; 
my $host = "host"; 
my $user = "username"; 
my $pass = "password"; 

my $ssh = Net::SSH::Perl->new($host); 
$ssh->login($username, $pass); 
my($stdout, $stderr, $exit) = $ssh->cmd($command); 

print $stdout; 
相關問題