[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ldap-Client automatisiert installieren



Hallo Ralf,

Am 12.08.2011 11:53, schrieb Ralf Prengel:
Hallo,

ich will per script auf einem Debain-System die notwendigen Pakete
installieren so das die Logins gegen einen Ldap-Server abgeglichen
werden. Soweit klappt das aber ich muss die Infos wie Server etc. bei
der Installation per Hand eingeben.
Wie kriege ich das automatisiert?

Wenn du sowieso per Script die Pakete einspielst, dann kann auch das Script die Voreinstellungen für diese Pakete einspielen. Und du spielst dann erst hinterher die betreffenden Pakete für den LDAP-Client ein. Das ist zwar keineswegs die perfekte Lösung (ich will es eigentlich besser ;) ) Deshalb hoffe ich auch, dass sich hier noch die Experten melden.

Kann ich irgendwie eine Antwortdatei
mitgeben

ja. Ein Beispiel (aus unserem Wiki für den pure-ftpd abgekupfert):

echo -e " \
pure-ftpd-common   pure-ftpd/ftpwho-setuid boolean false
pure-ftpd-common   pure-ftpd/virtualchroot boolean false
pure-ftpd-common   pure-ftpd/standalone-or-inetd   select  standalone \
" | debconf-set-selections

oder kann ich alternativ die Abfrage der Konfiguration
unterdrücken um im Nachgang per script fertige Konfigurationsdateien
einzuspielen?

Es gibt schon einen Modus für Debconf, das keine Fragen gestellt werden, aber ob und wenn ja wie beim Einspielen eines oder weniger Pakete nutzen kann, dass weiss ich leider nicht - wäre ich aber sehr daran interessiert.

Steht noch die Frage, wie man die gesuchten Einstellungen bekommt. ich mache das so, dass ich vor der Installation ein 'debconf-get-selections' in eine Datei umleite, danach auf dem Client installiere, dann nochmals 'debconf-get-selections' aufrufe und dabei in eine zweite Datei umleite. Durch ein kleines Perlscript lasse ich mir dann die Unterschiede raussuchen:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/usr/bin/perl
use strict;
use warnings;

my $datei1 = 'datei1';
my $datei2 = 'datei2';   # muss die "größere" sein!
my @daten1 = ();
my @daten2 = ();

#Einlesen der beiden Dateien
open DATEI1, '<', $datei1 or die "konnte $datei1 nicht lesen,$!\n";
while (my $zeile = <DATEI1>) {  push @daten1, $zeile; };
close DATEI1;

open DATEI2, '<', $datei2 or die "konnte $datei2 nicht lesen,$!\n";
while (my $zeile = <DATEI2>) {  push @daten2, $zeile; };
close DATEI2;

my $founded; my @temp = ();

# jetzt wird jede Zeile der 2. Datei in der 1. Datei gesucht
# wenn gefunden, dann "gelöscht". Der Rest ist das was interessiert
foreach my $zeile2 (@daten2) {
  $founded = 'no';
  foreach my $zeile1 (@daten1) {
    if ($zeile2 eq $zeile1) { $founded = 'yes';  last; }
  }
  if ($founded eq 'no') { push @temp, $zeile2; }
}

# Ausgabe:
foreach my $element (@temp) { print $element; }

__END__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Vielleicht hilft es dir ja weiter.

Viele Grüße
Hans-Dietrich


Reply to: