web-dev-qa-db-fra.com

Exécuter des commandes complètes via SSH distante

Dupliquer possible:
[.____] Comment utiliser SSH pour exécuter un script shell sur une machine distante?

J'essaie de créer un script Bash qui fonctionne sur les travaux de cron quotidiens de mon serveur distant pour vous connecter automatiquement via SSH dans une autre boîte Unix, exécutez quelques commandes, puis de partir.

#!/bin/bash
ssh machinehost.com -l admin -p 2222 "/usr/bin/find /share/Public/backups/set0 -mtime +14 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set1 -mtime +4 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set2 -mtime +3 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set3 -mtime +21 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set4 -mtime +2 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set5 -mtime +2 | xargs rm -f;
                               "

Je dois modifier mon code existant actuel pour faire quelque chose un peu plus compliqué avant chaque commande comme

if [ $(ls /share/Public/backups/set1 -1 | wc -l ) -gt 4 ] then run above command
fi

Comment allez-y exécuter cette commande sur la machine SSH distante et non sur mon cron local?

21
Nicarlo

Essayez d'écrire votre script Bash localement et appelez:

ssh [email protected] 'bash -s' < local_script.sh

( trouvé dans la discussion ici )

47
mopsled

Écrivez un script, copiez-le sur la machine distante et de SSH Exécuter uniquement ce script.

3
TMS

Une autre solution de contournement est d'utiliser Python. Il y a un module appelé PEXPPECT qui peut résoudre votre problème, et encore plus compliqué de scénario.

1
Kit Ho