2012-03-22 12 views
6

Se ho già inserito la chiave pubblica nell'host remoto. Quindi non c'è un problema di inserimento della password.come ssh in un host remoto ed eseguire immediatamente un comando

Desidero accedere a un computer remoto ed eseguire immediatamente screen -r. C'è un modo per ottenere questo?

Ad esempio:

ssh example.com ; screen -r 

Ma questo è sbagliato in quanto screen -r non invierà all'host remoto.

+0

Il comando 'screen' può richiedere un TTL. Altri comandi funzionano bene, ma come indicato nelle risposte, è necessario 'ssh host" comandi "' – gahooa

risposta

6

Rimuovere il punto e virgola dal vostro esempio:

ssh example.com "screen -r" 

Il vostro non andando a ottenere molto di larghezza di banda per quel particolare comando, però, come ha bisogno di un terminale collegato al fine di eseguire con successo.


* EDIT 1 *

Per eseguire più comandi, semplicemente li stringa insieme separate da virgola:

ssh example.com "screen -r; ls -al; ps -elfc" 

* EDIT 2 *

Ancora non interamente sicuro di quello che stai cercando di realizzare (era screen -r solo un esempio, o stai davvero cercando di mettere insieme un gruppo di comandi?). In ogni caso, io che modifica la mia risposta a coprire più possibilità:

di concatenare i comandi casuali insieme:

ssh example.com "ps -elfc; ls" 

per eseguire alcuni comandi casuali dopo schermata in esecuzione:

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

Per eseguire specificamente schermo e inviare comandi ad esso:

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

restituisce: 'Deve essere connesso a un terminale. Questo non è il mio desiderio. Voglio continuare ad usare questo host dopo 'screen -r'. –

+0

Suppongo che con "continua ad usare questo host", che intendi che vuoi emettere una stringa di comandi. Vedi modifica alla mia risposta per quello. Come ho detto prima, 'screen -r' non funzionerà senza un terminale collegato, e non avrai un terminale se stai eseguendo comandi remoti via ssh. – Perception

+0

@perception, "non avrai un terminale se stai eseguendo comandi remoti via ssh" non è vero - vedi la mia risposta per chiarimenti. – amcnabb

1

http://unixhelp.ed.ac.uk/CGI/man-cgi?ssh+1

ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec] [-D [bind_address:] port] [-e escape] [-F configfile] [-i identity_file] [-L [bind_address:] port: host: hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o opzione] [-p porta] [-R [indirizzo_indirizzo]: porta: host: hostport] [-S ctl_path] [w tunnel: tunnel] [utente @] hostname [comando]

Command è l'ultimo parametro. ; dice alla shell locale che ssh e screen sono due comandi diversi, non che uno è un comando e l'altro è un argomento.

Non sono sicuro se funzionerà o meno dal momento che lo schermo è un programma strano con cui farlo, ma lo schermo ssh blah.com ' è la sintassi corretta.

1

Ciò funzionerà

ssh [email protected] 'ls -l' 
+0

Questo è sbagliato. I backtick eseguiranno il comando * ls -l *, quindi prenderà l'output di quello e lo metterà come argomentazione su * ssh root @ something * – Corbin

+0

Oops! Typo! Intendevo "e non". Corretto –

+0

Questo non è il mio desiderio. Voglio continuare ad usare questo host dopo 'screen -r'. –

1

Provare a utilizzare le virgolette singole:

ssh example.com 'screen -r' 
+0

le virgolette non sono necessarie – salva

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. –

+0

@SamiKuhmonen chi/cosa stai indirizzando? –

1

Basta mettere il comando che si desidera eseguire dopo il nome host:

ssh example.com screen -r 
8

Quando si esegue un comando su un host remoto, per impostazione predefinita ssh non assegnerà uno pseudoterminale. Se si esegue un programma interattivo come lo schermo su un host remoto, è necessario avere uno pseudoterminale. L'opzione -t rende questo possibile. Prova:

ssh -t example.com "screen -r" 
0

provare questo ...

ssh -XY -t [email protected]_IP 'ssh -XY -t [email protected]_IP' 

si può continuare con il comando screen -r o qualsiasi altro a remoteToRemote_IP machine.

Problemi correlati