CPANに登録されているNet::OpenSSHを使用して、
PerlのスクリプトからSSHで接続してみる。

すでに接続先サーバとキーの交換が終わっている場合

  1.  
  2. use strict;
  3. use Net::OpenSSH;
  4.  
  5. my $host = "xxx.xxx.xxx.xxx";
  6. my $ssh = Net::OpenSSH->new($host);
  7. #エラー処理
  8. die "SSH Connection faild:", $ssh->error if( $ssh->error );
  9.  
  10. my $result = $ssh->capture("コマンド");
  11.  
  12.  

これで、実行結果が$resultに入るようになる。
この場合、SSH側のコマンドでエラーが発生した場合、スクリプトはそのエラーを標準エラー出力に表示する。

次に、エラー出力も取得するやりかた

  1.  
  2. use strict;
  3. use Net::OpenSSH;
  4.  
  5. my $host = "xxx.xxx.xxx.xxx";
  6. my $ssh = Net::OpenSSH->new($host);
  7. #エラー処理
  8. die "SSH Connection faild:", $ssh->error if( $ssh->error );
  9.  
  10. my ($result, $errput) = $ssh->capture2("コマンド");
  11.  
  12.  

capture2メソッドを使用することで、エラー出力も取得でき、
スクリプト内で処理可能となる。

非常に便利なライブラリですね。

Leave a Reply