I SSH in una moltitudine di server diversi ogni giorno e alcuni di loro hanno strutture di filesystem diverse per i loro siti web. Ogni volta che cambio server, devo capire dove raggiungere i file che voglio veramente (perché è molto raro che io voglia essere in ~
).
Uso i file Fabric per automatizzare tutte le mie azioni (spingere su git, SSH automatizzato sul server per eseguire il pull da git, riavviare l'applicazione Web, modificare le dipendenze, ecc.), quindi mi chiedevo se non potevo anche dirgli che lo voglio in SSH nella directory corretta in modo da poter eseguire fab ssh
ed essere in una normale sessione SSH, nel posto giusto e iniziare a lavorare immediatamente.
Non si tratta però di Fabric; per favore ignoralo. Fabric sta eseguendo solo una serie di comandi. Il mio argomento è con ssh
comando. Questo è ciò che dirò a Fabric di correre.
Quindi come posso ottenere ssh
su cd
in una 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 inserisco qualcosa in ~/.bashrc
non funzionerebbe per me.
Risposta accettata:
Sapevo di poter eseguire qualcosa all'accesso, ma sapevo che sarebbe uscito subito dopo l'esecuzione. Quello che ora ricordo è che posso eseguire quanto voglio su un server remoto. Puoi semplicemente concatenare i comandi insieme!
ssh [email protected] -t "cd /websites/website ; /bin/bash"
Ora posso solo dire al tessuto di farlo e siamo via. Semplice.
Ho detto che non aveva nulla a che fare con il tessuto, ma ecco anche la parte nuova del mio script di tessuto, 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,
})
Collego simbolicamente lo stesso script in modo che le variabili (server_host
, server_port
e remote_dir
) cambia da un sito all'altro.
Poiché Fabric può gestire la connessione in uscita, puoi anche fare questo:
def ssh():
''' SSH into the remote server at the correct directory '''
run('cd %s ; /bin/bash' % remote_dir)
Funziona ma l'output è anteposto con una stringa da Fabric. Ciò ha reso il prompt lungo più di 80 caratteri e anche se ho un sacco di risoluzione, è troppo per me 🙂
Correlati:Unity equivalente della funzione "commenti" di KDE?