J'ai un fichier (disons "thisfile.sh" par exemple) que je voudrais copier sur plusieurs serveurs (dont certains peuvent nécessiter une authentification par mot de passe) à la fois lors du lancement de mon fichier bash, présumé avec SCP. Toutes les adresses de serveur sont écrites ligne par ligne dans un document texte. Disons que le fichier s'appelle "ServerList", par exemple:
firstuser@server.com
seconduser@anotherserver.com
anotheruser@newserver.com
[...]
Comment puis-je atteindre cet objectif?
Edit: J'ai pensé à cela un peu plus, et j'aimerais quand même terminer avec bash en entrée, j'utiliserai une alternative un peu plus tard. J'imagine que je pourrais le faire en utilisant la commande de copie SCP et une variable à la place de ma destination, un petit quelque chose comme ce scp myfile $ Server: ~ / myfile . De cette façon, je suis à peu près sûr que je devrai utiliser une boucle de quelque sorte, afin que toutes les lignes soient copiées au fur et à mesure que je les copie.
Réponses:
Si vous voulez rester dans le domaine réservé à bash:
Ceci vous invitera à exécuter un travail à la fois et vous demandera une authentification si nécessaire
la source
Vous pouvez y parvenir de plusieurs façons. Vous pouvez utiliser quelque chose comme ansible ou fabric pour écrire un script qui se connecte à tous vos ordinateurs, leur copie le fichier et exécute le script. ou vous pouvez écrire un script bash / shell pour copier les fichiers puis exécuter le script.
Fabric et Ansible ont une courbe d’apprentissage légèrement plus longue, mais peuvent être plus utiles et ajouter facilement plus d’ordinateur ou modifier le script.
Le script bash ou shell sera plus facile à écrire mais un peu plus difficile à adapter si vous en avez besoin à l'avenir.
https://www.digitalocean.com/community/tutorials/how-to-use-fabric-to-automate-administration-tasks-and-deployments - Fabric
http://docs.ansible.com/ansible/intro_getting_started.html - Ansible
Voici les guides pour ansible et tissu
la source
Alors que Felipe a la meilleure réponse pour une solution uniquement bash, je pense qu'Ansible est de loin supérieur à cette tâche.
Vous devez simplement mettre tous vos serveurs dans un fichier d'inventaire comme ceci:
Et un livre de jeu qui ressemble à ceci:
Et puis courez:
la source