Fehlermeldungen des Perl-Skripts /usr/share/perl5/smbldap_tools.pm

Hallo,

die Fehlermeldungen beim Benutzeranlegen, siehe Fehlermeldungen bei Änderungen im LDAP (was: Fehlermeldungen bei sophomorix-move), bekomme ich, wie ich jetzt im laufenden Schuljahr nach und nach bemerke, bei etlichen Serverskripten. Dabei sind die Fehlermeldungen immer dieselben und beziehen sich immer auf o.g. Perlskript /usr/share/perl5/smbldap_tools.pm

Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 154, <CONFIGFILE> line 145.
Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 154, <CONFIGFILE> line 146.
Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 154, <CONFIGFILE> line 147.
Use of uninitialized value $value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 154, <CONFIGFILE> line 148.

Bis zum letzten Schultag des vergangenen Schuljahres gab es diese Meldungen nicht und ich habe nichts an der Serverkonfiguration verändert. Ich vermute daher nach wie vor einen Zusammenhang mit irgend einem Update, das seither kam.

Bislang habe ich festgestellt, dass die Meldungen in den sophomorix-Skripten (add, move) auftauchen, bei smbldap-usershow (und anderen smbldap-Befehlen), bei dem Skript AddMail2LDAP.sh aus dem Wiki, beim Doppelanmeldungsskript von Jesko.

Den LDAP habe ich auf Rüdigers Rat mit sophomorix-dump-pg2ldap schon neu aufgebaut.

Es wäre super, wenn wir die Ursache finden und beheben könnten.

Viele Grüße
Steffen

Hallo,

hier mal meine /usr/share/perl5/smbldap_tools.pm (im Anhang). Ich musste allerdings ein .txt im Dateinamen ergänzen, damit ich sie hochladen konnte.

smbldap_tools.pm.txt (39,4 KB)

Kann die mal bitte jemand mit seiner vergleichen?

Viele Grüße
Steffen

Hallo,

Ich hab mir in der smbldap_tool.pm die genannten Zeilen mal angeschaut, auch wenn ich von so was keine Ahnung habe.

Laut gedit (das zählt auch Kommentarzeilen und leere Zeilen durch) sind das die Zeilen 150 - 171:

sub subst_configvar {
    my $value = shift;
    my $vars  = shift;

    $value =~ s/\$\{([^}]+)\}/$vars->{$1} ? $vars->{$1} : $1/eg;
    return $value;
}

sub read_conf {
    my %conf;
    open( CONFIGFILE, "$smbldap_conf" )
      || die "Unable to open $smbldap_conf for reading !\n";
    while (<CONFIGFILE>) {
        chomp($_);
        ## throw away comments
        next if ( /^\s*#/ || /^\s*$/ || /^\s*\;/ );
        ## check for a param = value
        my ( $parameter, $value ) = read_parameter($_);
        $value = &subst_configvar( $value, \%conf );
        $conf{$parameter} = $value;
    }
    close(CONFIGFILE);

Das wäre also die Zeile 154, die moniert wird:

$value =~ s/\$\{([^}]+)\}/$vars->{$1} ? $vars->{$1} : $1/eg;

Was allerdings mit <CONFIGFILE> gemeint ist, was an vielen Stellen in der Datei auftaucht, finde ich weder in der Datei noch beim Googeln heraus - und die Ursache bzw. Lösung des Problems wohl gleich zweimal nicht.

Ich bräuchte also immernoch dringend Hilfe.

Viele Grüße
Steffen

Hallo,

das Problem ist gelöst.

Und jetzt beiße ich mir grad echt in den Allerwertesten, dass ich mich daran nicht mehr erinnert habe. Eigentlich dokumentiere ich alle Änderungen und Anpassungen penibel. Und genau in der smb.conf hab ich vor den Ferien wegen des Hinweises hier Nochmal Pykota / Drucknotifier unter Ubuntu 16.04
4 Zeilen ergänzt.

Im Prinzip hatte ich damals schon Zweifel, ob das so stimmt (Nochmal Pykota / Drucknotifier unter Ubuntu 16.04), zumal es nichts genützt hat.

Erst jetzt nach den Ferien, als ich wieder mit dem Server gearbeitet habe, ist mir das dadurch verursachte Problem dann aufgefallen, nur die Änderung nicht mehr eingefallen.

Kopf gegen die Wand schlag

Viele Grüße
Steffen

Hallo Steffen!

Wie alt sind deine Dateien?

# ll /etc/smbldap-tools/smbldap.conf
-rw------- 1 root root 6563 Aug 13  2014 /etc/smbldap-tools/smbldap.conf
18:00/0 gymlue ~ # ll /usr/share/perl5/smbldap_tools.pm
-rw-r--r-- 1 root root 40342 Sep 19  2012 /usr/share/perl5/smbldap_tools.pm

Sitze gerade im Bus. In welcher Log-Datei findest du diese Einträge. Meine
smbldap_tools.pm scheint identisch zu deiner zu sein. Zumindest bei den Zeilen
die du gepostet hast ist sie es!

Beste Grüße

Thorsten

######## eingesetztes System ########
LINUXMUSTER.NET
Die freie Linux Musterlösung

Hallo Thorsten,

deine Antwort hat sich wohl mit dem E-Mail-Versand meiner Lösung überschnitten :wink:

Viele Grüße
Steffen

Hallo Steffen!

Schön das du es gefunden hast. Willst du noch eine Antwort auf deine Frage? Hier bitte schön:

EIn paar Zeilen davor

open( CONFIGFILE, "$smbldap_conf" )

wird die Datei die in der Variablen $smbldap_conf benannt ist geöffnet für die weitere Bearbeitung. (Daher kam meine Frage bezüglich der Dateien) Alles was direkt mit der Datei auf Dateisystemebene passieren soll wird dann mit dem Namen der in open als erstes genannt veranlasst. Z.B:

printf CONFIGFILE "Blabla" würde etwas in die Datei schreiben. So in etwa …

Ich hoffe das war verständlich und du ziehst etwas neues Wissen aus deiner “Vergesslichkeit”. :wink:

Lieben Gruß

Thorsten

Hallo Thorsten,

EIn paar Zeilen davor

open( CONFIGFILE, “$smbldap_conf” )|

wird die Datei die in der Variablen $smbldap_conf benannt

dass die Configuration hier geöffnet wird habe ich schon verstanden. Ich
hatte aber noch etwas in der Art
[CONFIGFILE = /etc/samba/smb.conf]
erwartet.

Ich hoffe das war verständlich und du ziehst etwas neues Wissen aus
deiner “Vergesslichkeit”. :wink:

immer :wink:

Viele Grüße
Steffen

Moin Steffen!

[CONFIGFILE = /etc/samba/smb.conf]

Genau das passiert. Allerdings über den “Umweg” mit der Variablen. Diese wird
weiter oben im Script in der Variablen-Deklaration definiert. Sieht halt die
Syntax der Programmiersprache so vor.

Beste Grüße

Thorsten