comment puis-je exécuter une commande/un script sur une boîte linux distante? dire que je veux faire le service Tomcat démarrer sur la boîte b à partir de la boîte a.
Je suppose que ssh
est le moyen le mieux sécurisé pour cela, par exemple:
ssh -OPTIONS -p SSH_PORT user@remote_server "remote_command1; remote_command2; remote_script.sh"
où les OPTIONS doivent être déployées en fonction de vos besoins spécifiques (par exemple, la liaison à ipv4 uniquement) et où votre commande à distance peut démarrer votre démon Tomcat.
Remarque:
Si vous ne voulez pas être invité à chaque exécution de ssh, jetez également un coup d’œil à ssh-agent et éventuellement à keychain
si votre système le permet. Key est ... pour comprendre le processus d’échange de clés ssh. Regardez attentivement ssh_config (le fichier de configuration du client ssh) et sshd_config (le fichier de configuration du serveur ssh). Les noms de fichiers de configuration dépendent de votre système. Quoi qu’il en soit, vous les trouverez quelque part comme /etc/sshd_config
. Dans l’idéal, les utilisateurs ne doivent pas exécuter ssh en tant que root, mais bien en tant qu’utilisateur spécifique des deux côtés, serveurs et clients.
Quelques documents supplémentaires sur les pages principales du projet source:
ssh et ssh-agent
homme ssh
http://www.snailbook.com/index.html
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
trousseau
http://www.gentoo.org/doc/fr/keychain-guide.xml
un tuto plus ancien en français (par moi-même :-) mais pourrait être utile aussi:
http://hornetbzz.developpez.com/tutoriels/debian/ssh/keychain/
ssh user@machine 'bash -s' < local_script.sh
ou vous pouvez simplement
ssh user@machine "remote command to run"
Je pense que cet article explique bien:
Exécution de commandes sur un hôte Linux/UNIX distant
Google est votre meilleur ami ;-)
Si vous ne voulez pas traiter avec la sécurité et voulez le rendre aussi exposé (alias "commode") que possible à court terme et | ou n'avez pas de ssh/telnet ou génération de clé sur tous vos hôtes, vous pouvez pirater un one-liner avec netcat. Ecrivez une commande sur le port de votre ordinateur cible via le réseau et il l'exécutera. Ensuite, vous pouvez bloquer l'accès à ce port à quelques utilisateurs "de confiance" ou l'envelopper dans un script autorisant uniquement l'exécution de certaines commandes. Et utilisez un utilisateur à faible privilège.
mkfifo /tmp/netfifo; nc -lk 4201 0</tmp/netfifo | bash -e &>/tmp/netfifo
Cette doublure lit la chaîne que vous envoyez dans ce port et la transfère dans bash pour qu'elle soit exécutée. stderr & stdout sont renvoyés dans netfifo et renvoyés à l'hôte se connectant via nc.
Pour exécuter une commande à distance: echo "ls" | nc Host 4201