2009-08-31 7 views
0

私は、Linuxを実行しているコンピュータとネットワーク接続されたPC上で動作するPerlスクリプトを書いています。スクリプトは、Linuxマシン上のシェルスクリプトのセットに入力を与え、結果を受け取る必要があります。ローカルのPerlプログラムを使ってリモートマシン上でシェルスクリプトを実行するにはどうすればよいですか?

:それは次のエラーを出力します

system("./shell_script.sh"); 

:私は、PCからの入力ファイルをコピーすることができるよとでもLinuxマシン上でPerlスクリプトを呼び出しますが、そのスクリプトは.shのファイルを実行しようとしたときを経て

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

これは、Windowsで.shファイルを実行しようとしているという意味です。それでは、PCにLinuxボックスに "hey、buddy、this yourself"と言ってもらう方法はありますか?

ありがとうございます。

+0

サンプルコードの小さなビットをシステムコールの周りにいくつかのコンテキストを与えるために有用である可能性があります。 –

+0

いいアイデア、ちょっと待ってください... – tardcaster

答えて

5

Linuxマシンにログインしてシェルスクリプトを実行するには、Net::SSHまたはExpectのようなものを使用したいと思います。 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; 
関連する問題