Ich möchte überprüfen, ob ein Benutzer Zugriffsrechte auf eine bestimmte Samba-Freigabe hat. Ich mache dies derzeit mit dem Befehl smbclient
in Version 4.3.11-Ubuntu
.Unterschiedlicher Exit-Status in Perls-System als in Bash
Offenbar ist es nicht eine gute Idee, den exit
Status für die Bewertung des Erfolgs zu verwenden, wie sie in dieser Frage beschrieben: Exit codes of smbclient
Aber trotzdem habe ich ein seltsames Verhalten. Ich bekomme einen anderen Ausgangsstatus, wenn ich das Programm mit Perls system
Funktion anrufe.
perldoc -f system
sagt mir dies:
Der Rückgabewert ist der Exit-Status des Programms durch den „warten“ Aufruf zurückgegeben.
Wenn von Kommandozeilen-Aufruf ich EXIT 1
[email protected]:~$ smbclient //server/share MyFalsePassword --user=any.user -c "cd somefolder;"; echo "EXIT $?"
WARNING: The "syslog" option is deprecated
session setup failed: NT_STATUS_LOGON_FAILURE
EXIT 1
den gleichen whitin Perl aufrufen ich EXIT 256
bekommen.
[email protected]:~$ perl -E 'say "EXIT " . system("smbclient //server/share MyFalsePassword --user=any.user -c \"cd somefolder;\"");'
WARNING: The "syslog" option is deprecated
session setup failed: NT_STATUS_LOGON_FAILURE
EXIT 256
Ich habe auch den Wert 256
in der Variablen $?
whitin Perl.
Hinweis: Ich bekomme EXIT 0
in beiden (Bash und Perl), wenn ich die richtigen Anmeldeinformationen verwenden.
Meine Frage: Warum bekomme ich einen anderen Exit-Status von Bash und Perl, wenn ich falsche Anmeldeinformationen verwende? Wie überprüfe ich richtig?
Ich benutze Perl v5.22 auf Ubuntu 16.04.
Einige weitere Hintergrund: http://blogs.perl.org/users/mauke/2011/09/exit-statuses-and-how-works.html – melpomene