2010-01-28 5 views
0

Je voudrais exécuter une commande SSH et rediriger la sortie vers un fichier.Script: La commande SSH s'exécute et laisse le shell ouvert, la sortie du tube dans le fichier

En général, je ferais:

ssh user @ ip « commande » >>/monfichier

le problème est que la connexion ssh fermer une fois que la commande est exécutée, cependant - ma commande envoie la sortie au canal ssh via un autre programme en arrière-plan, donc je ne reçois pas la sortie. Comment puis-je traiter ssh pour laisser mon shell ouvert?

acclamations

sven

+1

Veuillez indiquer comment vous envoyez des données au canal ssh en arrière-plan. Cela n'a aucun sens pour moi comme écrit. – bmargulies

+0

le système dont je parle est comme un routeur Cisco. la commande que j'exécute permet le débogage et plusieurs étapes sont requises, par exemple: 1. diag debug fr 2. diag application de débogage proxy 1 les deux commandes sont exécutées et je suis replacé dans le "shell". dès que quelque chose est déclenché la sortie du débogage est affichée sur le cli. Cependant, je veux l'inclure dans un script et si j'exécute les commandes, le canal SSH est fermé une fois la commande terminée. acclamations sven – sven

+0

Voir cette question peut-être similaires: http://stackoverflow.com/questions/1633750/ssh-with-command-plus-the-shell –

Répondre

1

Ma compréhension est que command commence un processus d'arrière-plan qui peut-être va écrire une sortie à la borne plus tard. Si command se termine avant que la session SSH soit terminée et il n'y aura aucun terminal pour le programme d'arrière-plan à écrire.

pour terminer d'une manière plus intelligente Une solution simple et naïve est à juste assez long sommeil

ssh [email protected] "command; sleep 30m" >> /myfile 

Une meilleure solution que le sommeil serait d'attendre que le processus d'arrière-plan (s), mais est impossible à dire sans plus de détails.

+0

merci beaucoup. mais le système distant est un système fermé sans accès à un shell réel (pensez à un shell cisco ssh), donc aucune commande personnalisée n'est autorisée. Pour simplifier ce dont j'ai besoin, je veux que la commande suivante soit exécutée sans fermer le canal ssh une fois l'exécution terminée (ceci doit être fait sans rien changer à la "commande" elle-même, donc pas de changement): ssh user @ ip " " – sven

0

Quelque chose de plus puissant que bash serait Python avec Paramiko et PyExpect.

Questions connexes