Esecuzione di un comando sull'host remoto con SSH interattivo (in modo condizionale)


9

Vorrei poter eseguire automaticamente un comando su un host remoto ogni volta che accedo a quell'host, ma all'interno della sessione SSH interattiva corrente.

Qualcosa di simile a

ssh user@remotehost [run do.sh]

dove do.shsvolge un paio di attività di pulizia e quindi si ricollega a una screensessione (attualmente eseguo do.shmanualmente dopo l'accesso all'host).

Non voglio aggiungerlo .bashrcperché accedo a questo host da altre macchine e non voglio do.shcorrere quando eseguo il login da lì, quindi ho bisogno che sia facoltativo.


1
perché non corri semplicemente ssh user@remotehost /path/to/do.sh? Se funziona, puoi anche alias in .ssh / config o nel tuo .bashrc personale
Coren,

Quindi vuoi eseguire "do.sh" quando accedi a remotehost da qualche parte, ma non quando accedi a remotehost da qualcun altro? Quali host si fa a connettersi da dovrebbe attivare "do.sh", e che gli altri non dovrebbero?
Mat

Sì, voglio eseguirlo a volte, ma non sempre, il motivo è che ho una scorciatoia da tastiera da un launcher sul mio Mac che mi dà quello che voglio la maggior parte del tempo. Ho preso una scorciatoia e voglio ssh nella casella e quindi ricollegarmi a una sessione dello schermo, ma non voglio farlo se uso un terminale normale come "ssh user @ host". La soluzione menzionata di seguito da Patkos fa esattamente ciò di cui ho bisogno.
Jim Farkas,

Risposte:


15

Potresti provare qualcosa del genere:

ssh server -t "do.sh; bash --login"

come suggerito qui: /server/167416/change-directory-automatically-on-ssh-login

Oppure potresti provare a usare l'opzione 'LocalCommand' in sshd_conf (o ~ / .ssh / config) come descritto nella pagina man ufficiale: http://unixhelp.ed.ac.uk/CGI/man-cgi?ssh+1


1
Grazie mille!! ssh server -t "/home/user/do.sh; bash --login" ha funzionato per me. köszönöm szépen!
Jim Farkas,

1
Szivesen (Prego)
Patkos Csaba,

@PatkosCsaba Si prega di evitare altre lingue oltre all'inglese qui. Questo vale anche per i commenti.
LinuxSecurityFreak

3

Una parte del puzzle: supponendo OpenSSH, il sshclient imposterà la seguente variabile d'ambiente:

SSH_CONNECTION Identifica le estremità del client e del server della connessione. La variabile contiene quattro valori separati da spazio: indirizzo IP client, numero porta client, indirizzo IP server e numero porta server.

Quindi puoi usare queste informazioni per scoprire da dove viene la tua connessione .

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.