GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Ssh in una directory specifica?

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?
Ubuntu
  1. Autorizzazioni Ssh e Home Directory?

  2. Come entrare in una directory specifica?

  3. Ssh - Provare a Ssh nel server e ottenere Key_load_public:nessun errore di file o directory di questo tipo?

  4. Eliminare la directory padre (non vuota) se una directory figlio specifica è vuota?

  5. Come SSH in un contenitore Docker

Come eseguire SSH in un contenitore Docker in esecuzione ed eseguire comandi

Come SSH in una directory particolare su Linux

Come disabilitare l'accesso SSH a un utente specifico in Linux

Come SSH in un Raspberry Pi [Suggerimento per principianti]

Come SSH in un Docker Container

Limita l'accesso SSH a un IP o host specifico