Singolo comando per accedere a SSH ed eseguire il programma?


58

C'è un modo per strutturare un singolo comando per accedere tramite SSH a un server remoto ed eseguire un programma sulla shell di accesso remoto?

Nel manuale OpenSSH, viene visualizzato il messaggio "Se viene specificato il comando, viene eseguito sull'host remoto anziché su una shell di accesso". Ad esempio, ssh user@server mailaccederà al server remoto, visualizzerà lo stato della cassetta postale e quindi tornerà alla shell locale. C'è un modo per rimanere sulla shell remota dopo aver visualizzato lo stato della posta?

Inoltre, ssh user@server [command]non sembra funzionare se il comando è un programma, ad esempio vim o mutt. C'è un modo per accedere alla shell remota ed eseguire un programma rimanendo nella shell remota durante il programma e dopo essere usciti dal programma, solo alla fine uscendo da un logoutcomando specifico (proprio come in una normale sessione SSH)?

Alla fine vorrei poter inserire un comando come un alias nel .bashrc locale, in modo che possa essere eseguito rapidamente quando lo si desidera. Un esempio potrebbe essere quello di accedere tramite SSH a un server remoto e aprire mutt sul server remoto per leggere o inviare e-mail.


Cosa intendi per rimanere sulla shell remota dopo aver visualizzato lo stato della posta? Non sarebbe equivalente a fare uno ssh dopo l'esecuzione del comando MAIL: ssh remote@server mail ; ssh remote@server? Inoltre, qualsiasi comando eseguito in remoto che necessita di un terminale non sopravviverà / funzionerà su ssh giusto?
MK

Bene, sembra funzionare per eseguire il comando e quindi ottenere la shell remota, ma lo fa aprendo una connessione SSH ed eseguendo il comando e chiudendo la connessione SSH e quindi aprendo un'altra connessione SSH. Esiste un modo per fare tutto ciò con un'unica prima connessione? Inoltre, ciò non consente ancora al comando di eseguire un programma.
user981178

Risposte:


90

Hai provato ssh -t user@server "mail && bash"(o sostituito bashcon qualunque shell ti piace)?

Il -tè necessario al fine di creare una pseudo-tty per bash da utilizzare come una shell interattiva.


1
Anche se, lo ammetto, probabilmente preferirei semplicemente correre muttall'interno di un tmuxo screen, quindi posso collegarlo e ricollegarlo a piacimento, inoltre posso eseguire tutte le shell aggiuntive che volevo.
jsbillings,

1
Bene, sto trovando vari comportamenti con questo comando. Utilizzato come sopra (nella risposta), visualizza ancora solo lo stato della cassetta postale e quindi si disconnette, ma ora mostra anche che la connessione è chiusa. Usato come sopra, ma con nano, ad esempio, invece della posta, apre una sessione nano e poi all'uscita ritorna alla shell bash remota, che deve essere chiusa exitinvece di logout. Non sono ancora in grado di provarlo con mutt (o simile).
user981178

L' -topzione produce qualche tipo di problema di sicurezza? Non l'ho mai usato prima.
user981178

Per quanto ne so, non ci sono problemi di sicurezza. Hai provato a sostituire il &&con un ;?
Brm

qualsiasi comando che esce con uno stato di uscita diverso da zero causerebbe la mancata esecuzione del secondo comando, a causa della logica della shell.
jsbillings,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.