j'ai actuellement les lignes suivantes de code dans un script:Une manière plus efficace de boucler sur SSH dans KSH?
set -A ARRAY OPTION1 OPTION2 OPTION3 OPTION4
set -A matches
for OPTION in ${ARRAY[@]}; do
DIFF=$(ssh [email protected]$host " diff $PERSONALCONF $PRESETS$OPTION")
if [[ $DIFF == "" ]]; then
set -A matches"${matches[@]}" $OPTION
fi
done
Fondamentalement, j'avoir une boucle qui passe à travers chaque élément dans un réseau prédéfini, se connecte à un serveur distant (même serveur chaque fois) , puis compare un fichier avec un fichier défini par la boucle à l'aide de la commande diff. Fondamentalement, il compare un fichier personal.conf avec personal.conf.option1, personal.conf.option2, etc. S'il n'y a pas de différence, il l'ajoute au tableau. S'il y a une différence, rien ne se passe. Je me demandais s'il est possible d'exécuter ceci ou d'obtenir le même résultat (stocker les fichiers correspondants dans un tableau sur l'ordinateur hôte, pas le serveur auquel il est connecté) en ne se connectant qu'une seule fois via SSH. Je ne peux rien stocker sur le serveur distant, et je ne peux pas non plus exécuter un script distant sur ce serveur. Je peux seulement émettre des commandes via ssh (une sorte de configuration maladroite). Actuellement, il se connecte autant de fois qu'il y a d'options. Cela semble inefficace. Si quelqu'un a une meilleure solution, j'aimerais l'entendre.
Prenez soin de vous assurer qu'il fonctionne vraiment toutes les options dans le tableau. ssh dans une boucle quittera (selon mon expérience) après le premier appel si vous n'ajoutez pas dev/null à la fin de l'appel ssh. –