9
votes

Comment ssh dans un hôte distant et exécuter une commande immédiatement

Si j'ai déjà mis la clé publique à l'hôte distant. Donc, il n'y a pas de problème d'entrée de mot de passe.

Je souhaite connecter une machine distante et exécuter écran -r code> immédiatement. Y a-t-il un moyen d'y parvenir? p>

Par exemple: P>

ssh example.com ;  screen -r 


1 commentaires

La commande peut nécessiter un TTL. D'autres commandes fonctionnent bien, mais comme indiquées dans les réponses, vous avez besoin de hôte ssh "commandes"


9 Réponses :


11
votes

Retirez le point-virgule de votre exemple:

ssh -t example.com "screen -r -X ls"


5 commentaires

Il retourne: doit être connecté à un terminal. . Ce n'est pas mon veux. Je veux continuer à utiliser cet hôte après écran -r .


Je suppose que par 'continuer à utiliser cet hôte', que vous voulez dire que vous souhaitez émettre une chaîne de commandes. Voir Modifier à ma réponse pour cela. Comme je l'ai déjà dit, écran -r ne fonctionnera tout simplement pas sans une borne attachée, et vous n'aurez pas de terminal si vous exécutez des commandes distantes via SSH.


@Perception, "Vous n'aurez pas de terminal si vous exécutez des commandes distantes via SSH" n'est pas vraie - voir ma réponse pour clarification.


Peut-être que j'aurais dû clarifier ma déclaration avec "par défaut". Je garde ma réponse aussi générique que possible depuis que ce n'est pas tout à fait clair ce que l'OP veut vraiment accomplir.


Merci d'avoir répondu. Mon objectif: tous les jours, je me connecte à l'hôte distant et à faire de nombreux travaux, pas une commande spécifique en série. Cependant, chaque fois que j'ai besoin de 1) ssh dans l'hôte. 2) Tapez la commande écran -r . Je me demande si je peux faire ces deux choses dans un entrer appuyer sur la touche.



1
votes

http://unixhelp.ed.ac.uk/cgi/ Man-cgi? SSH + 1

SSH [-1246AACFGKMNNQSTTVVXXY] [-B BIND_ADDRESS] [-C CIPHER_SPEC] [-D [BIND_ADDRESS:] port] [-e Escape_char] [-f Configfile] [-I Identity_file] [-L [Bind_Address:] Port: hôte: hostport] [-l login_name] [-m Mac_Spec] [-O CTL_CMD] [-O Option] [-P port] [-R [BIND_ADDRESS:] Port: hôte: hostport] [-s ctl_path] [-W tunnel: tunnel] [Utilisateur @] nom d'hôte [commande]

commande est le dernier paramètre. ; Indique à la coque locale que SSH et écran sont deux commandes différentes, et non que l'une est une commande et l'autre est un argument.

Je ne sais pas si cela fonctionnera ou non, car l'écran est un programme étrange pour le faire avec, mais ssh blah.com 'écran -r' est la syntaxe correcte.


0 commentaires

1
votes

Cela fonctionnera

ssh root@something 'ls -l'


3 commentaires

C'est faux. Les backtsks exécuteront la commande ls -l puis prenez la sortie de cela et mettrez-la comme une dispute à ssh root @ quelque chose


Oups! Faute de frappe! Je voulais dire 'et pas `. Corrigée


Ce n'est pas mon veux. Je veux continuer à utiliser cet hôte après écran -r .



1
votes

Essayez d'utiliser des guillemets simples:

ssh example.com 'screen -r'


2 commentaires

Cela ne fournit pas de réponse à la question. Critiquer ou demander des éclaircissements d'un auteur, laissez un commentaire sous leur poste.


@Samikuhmonen OMS / Que répondez-vous?



0
votes

Il suffit de mettre la commande que vous souhaitez exécuter après le nom d'hôte: xxx


0 commentaires

11
votes

Lorsque vous exécutez une commande sur un hôte distant, SSH par défaut ne va pas allouer un pseudoterminal. Si vous exécutez un programme interactif tel que l'écran sur un hôte distant, vous devez avoir un pseudoterminal. L'option -t code> rend cela arriver. Essayez:

ssh -t example.com "screen -r"


0 commentaires

2
votes

Vous pouvez également faire écho à votre commande à l'hôte distant: xxx


0 commentaires

0
votes

Essayez celui-ci ... xxx

Vous pouvez continuer avec la commande écran -r ou tout autre à la machine RemoteToremote_ip.


0 commentaires

0
votes

Tout ce que vous avez à faire est de passer le drapeau -t code>.

ceci: p> xxx pré>

exécute tmux avec les options spécifiées ( -à code> signifie connecter à la session nommée o code>) p>

si je l'exécute sans le -t code> i " : P>

ssh -t v 'tmux attach -t o'


0 commentaires