2009-09-02 6 views
4

インストールスクリプトの実行中に自動的にパスワードを入力したいと考えています。私はPerlのバッククォートを使ってインストールスクリプトを呼び出しました。今私の問題は、expectなどを使ってパスワードを入力する方法です。上記を実行するとPerlスクリプトのパスワードを入力するためにExpectを使用するにはどうすればよいですか?

my $op = `install.sh -f my_conf -p my_ip -s my_server`; 

、パスワードラインが印刷されます:上記の行で

Enter password for the packagekey: 

を私はパスワードを入力したいです。

答えて

10

Expect.pmを使用してください。中にユーザーからのフィードバックを必要と

このモジュールは、特にアプリケーションのプログラムによる制御のために調整されて

#!/usr/bin/perl 

use strict; 
use warnings; 

use Expect; 

my $expect  = Expect->new; 
my $command  = 'install.sh'; 
my @parameters = qw(-f my_conf -p my_ip -s my_server); 
my $timeout  = 200; 
my $password = "W31C0m3"; 

$expect->raw_pty(1); 
$expect->spawn($command, @parameters) 
    or die "Cannot spawn $command: $!\n"; 

$expect->expect($timeout, 
       [ qr/Enter password for the packagekey:/i, #/ 
        sub { 
         my $self = shift; 
         $self->send("$password\n"); 
         exp_continue; 
        } 
       ]); 
3

プログラムは標準入力からパスワードを読み込む場合は、あなただけのパイプができ、それは:

`echo password | myscript.sh (...)` 

の場合ExpectまたはPTYs。

1

パスワードはファイルに保存でき、インストールスクリプトの実行中にファイルからパスワードを読み取ることができます。

関連する問題