Comment puis-je capturer la sortie des commandes à distance, puis émettre des commandes plus éloignées?
-
20-09-2019 - |
Question
Je suis en cours d'exécution d'un script où il se connecter à un serveur exécute alors la commande "Passwd -n debug 0 -x 99999 -i -1" pour éliminer le vieillissement de l'utilisateur de débogage. Si le débogage utilisateur n'est pas présent alors je veux créer le débogage utilisateur, changer le mot de passe, puis exécutez la commande ci-dessus pour le vieillissement.
Comment puis-je faire?
Cordialement, Vasistha
La solution
De perlfunc(1)
:
system LIST [...] The return value is the exit status of the program as returned by the "wait" call. To get the actual exit value, shift right by eight (see below).
Par conséquent:
my $ret = system(qw/passwd -n 0 -x 99999 -i -1 debug/);
if ($ret != 0) {
# failure handling code here
}
Autres conseils
Utilisez marionnette .
Si vous insistez vraiment le faire, utilisez manuellement getent passwd debug
pour vérifier si l'utilisateur existe:
if [ $(getent passwd debug | wc -l ) = 0 ]; then
adduser debug
fi
Je suggère d'utiliser quelque chose comme Attendez-vous. Il gère l'interactivité pour vous. Vous pouvez vous connecter au serveur, exécuter des commandes, vérifiez la sortie, envoyer plus d'entrée, et ainsi de suite. Si vous faites beaucoup d'administration de serveur distant, il est un outil très pratique pour savoir. Il y a même un article à ce sujet dans Le Perl Review Problème 4.2 (printemps 2008)