Posso SSH in una directory specifica?


9

SSH in una moltitudine di server diversi ogni giorno e alcuni di essi hanno strutture di filesystem diverse per i loro siti Web. Ogni volta che cambio server, devo capire dove andrò ai file che voglio davvero (perché è molto raro che io voglia trovarmi ~).

Uso i file Fabric per automatizzare tutte le mie azioni (spingendo su git, SSH automatizzato sul server per estrarre da git, riavviando l'applicazione Web, cambiando dipendenze, ecc.), Quindi mi chiedevo se non potevo anche dirgli che volevo a SSH nella directory giusta in modo che io possa correre fab sshed essere in una normale sessione SSH, nel posto giusto e iniziare a lavorare immediatamente.

Non si tratta di Fabric però; per favore ignoralo. Fabric sta eseguendo un batch di comandi. Il mio argomento è con il sshcomando. Questo è ciò che dirò a Fabric di correre.

Quindi, come posso accedere ssha cduna directory specifica all'accesso?

Nota: questo non può essere un server o una cosa a livello di utente. Ho più siti Web sotto un utente su alcuni server, quindi attaccare qualcosa ~/.bashrcnon funzionerebbe per me.

Risposte:


9

Beh, sapevo che avrei potuto eseguire qualcosa all'accesso, ma sapevo che sarebbe uscito subito dopo l'esecuzione. Quello che ora ricordo è che posso correre quanto mi pare su un server remoto. Puoi semplicemente concatenare i comandi insieme!

ssh user@server -t "cd /websites/website ; /bin/bash"

Ora posso solo dire a Fabric di farlo e siamo via. Semplice.


Ho detto che non aveva nulla a che fare con Fabric, ma ecco anche la nuova parte del mio script Fabric, basato su quanto sopra:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % {
        'server': server_host,
        'port': server_port,
        'remote_dir': remote_dir,
    })

I link simbolico lo stesso script in giro così le variabili ( server_host, server_porte remote_dir) il cambiamento da un sito all'altro.

Poiché Fabric è in grado di gestire la connessione in uscita, è possibile eseguire anche questa operazione:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    run('cd %s ; /bin/bash' % remote_dir)

Questo funziona ma l'output è anteposto con una stringa di Fabric. Questo ha richiesto oltre 80 caratteri e mentre ho tonnellate di risoluzione, è troppo per me :)

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.