Je souhaite vérifier si un utilisateur a des droits d'accès sur un certain partage Samba. Je suis en train de le faire en utilisant la commande smbclient
dans Version 4.3.11-Ubuntu
.Statut de sortie différent dans le système Perls que dans Bash
Apparemment, ce n'est pas une bonne idée d'utiliser le statut exit
pour l'évaluation du succès, tel que décrit dans cette question: Exit codes of smbclient
Mais néanmoins, j'avoir un comportement étrange. Je reçois un état de sortie différent lorsque j'appelle le programme avec la fonction Perls system
.
perldoc -f system
me dit ceci:
La valeur de retour est l'état de sortie du programme tel qu'il est retourné par l'appel « attendre ».
Lorsque vous appelez de commandline je reçois 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
L'appel de la même whitin Perl je reçois EXIT 256
.
[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
J'ai aussi la valeur 256
dans la variable $?
whitin Perl.
Remarque: Je reçois EXIT 0
à la fois (Bash et Perl) si j'utilise les informations d'identification correctes.
Ma question: Pourquoi est-ce que j'obtiens un statut de sortie différent de Bash et Perl si j'utilise de fausses informations d'identification? Comment puis-je vérifier correctement? Je utilise Perl v5.22 sur Ubuntu 16.04.
Un peu plus d'arrière-plan: http://blogs.perl.org/users/mauke/2011/09/exit-statuses-and-how-works.html – melpomene