Frage

Ich möchte automatisch ein Kennwort eingeben, während ein Installationsskript ausgeführt wird. Ich habe das Skript mit den Backticks in Perl installieren aufgerufen. Nun meine Frage ist, wie gebe ich das Passwort mit expect oder etwas anderes?

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

Wenn die oben ausgeführt wird, wird ein Passwort Zeile gedruckt:

Enter password for the packagekey: 

In der obigen Zeile mag ich das Passwort einzugeben.

War es hilfreich?

Lösung

Expect.pm .

Dieses Modul ist besonders für programatic Steuerung von Anwendungen zugeschnitten, die Benutzerrückmeldung erfordert

#!/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;
                    }
                ]);

Andere Tipps

Wenn das Programm liest das Passwort von der Standardeingabe, können Sie nur eine Pipe in:

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

Wenn nicht, erwarten oder PTYs.

Sie können das Kennwort in einer Datei speichern und während das Skript installiert ausgeführt wird, lesen Sie das Kennwort aus der Datei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top