J'essaie d'utiliser s'attendre à gérer rsync sur un shell ssh, mais il reste bloqué.
Si je lance ma commande rsync cela fonctionne (simplifié ici): Il me demande mon mot de passe et copie les fichiers sur le serveur:
rsync -e ssh -<other_params>
Si je joins alors cela dans l'attente:
expect -d -c "spawn rsync -e ssh -<other_params>" -c "expect password:" -c "send mypass\r"
Il ne s'exécute pas correctement, le programme existe et aucun fichier n'est copié. Même le mode débogage ne donne pas beaucoup d'indices.
Ma meilleure hypothèse est que rsync est en train de générer le processus SSH, et que le processus SSH doit être utilisé pour interagir, mais que send collecte l'identifiant du processus rsync et y envoie les entrées.
Des pensées?
Réponses:
La réponse à ce problème était que je devais ajouter une commande wait à la fin du script expect. Comme le montre la question, cela fonctionnait, mais il envoyait le mot de passe puis mettait immédiatement fin au processus. Ajouter attente attend que le processus rsync se termine.
Version corrigée:
la source