どのように私はPerlスクリプトのパスワードを入力するよう期待し使用することができますか?
質問
私は、インストールスクリプトを実行中に自動的にパスワードを入力したいです。私はPerlでバッククォートを使用してインストールスクリプトを呼び出しています。私はexpect
または何か他のものを使用してそのパスワードを入力してくださいどのように今私の問題はありますか?
my $op = `install.sh -f my_conf -p my_ip -s my_server`;
上記を実行すると、パスワードのラインが印刷される
Enter password for the packagekey:
上記の行では、私はパスワードを入力したいです。
解決
を使用 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;
}
]);
他のヒント
は、プログラムが標準入力からパスワードを読み込む場合は、することができますでちょうどパイプそれをます:
`echo password | myscript.sh (...)`
でない場合は、期待やPTYは。
あなたは、ファイルにパスワードを保存して、インストールスクリプトを実行中に、ファイルからパスワードを読み取ることができます。
所属していません StackOverflow