GNU/Linux >> Znalost Linux >  >> Ubuntu

Ssh do konkrétního adresáře?

I SSH do mnoha různých serverů každý den a některé z nich mají různé struktury souborového systému pro své webové stránky. Pokaždé, když změním server, musím vyřešit, kde se dostanu k souborům, které opravdu chci (protože jen velmi zřídka chci být v ~ ).

Soubory Fabric používám k automatizaci všech svých akcí (posunutí do git, automatizované SSH na server pro stažení z git, restartování webové aplikace, změna závislostí atd.), takže mě napadlo, jestli bych nemohl také říct, že chci na SSH do správného adresáře, abych mohl spustit fab ssh a být v normální relaci SSH, jen na správném místě a začít okamžitě pracovat.

Tady však nejde o Fabric; prosím ignorujte to. Fabric právě spouští dávku příkazů. Můj argument je s ssh příkaz. To je to, co řeknu Fabricovi, aby běžel.

Jak tedy mohu získat ssh na cd do konkrétního adresáře při přihlášení?

Poznámka:toto nelze být serverovou nebo uživatelskou záležitostí. Na některých serverech mám více webových stránek pod jedním uživatelem, takže něco vkládám do ~/.bashrc by pro mě nefungovalo.

Přijatá odpověď:

Věděl jsem, že po přihlášení mohu něco spustit, ale věděl jsem, že se to po spuštění ukončí. Teď si pamatuji, že na vzdáleném serveru můžu běžet, jak chci. Příkazy můžete jednoduše spojit dohromady!

ssh [email protected] -t "cd /websites/website ; /bin/bash"

Teď můžu říct tkanině, aby to udělala, a jsme pryč. Jednoduché.

Řekl jsem, že to nemá nic společného s látkou, ale zde je také nová část mého scénáře látky na základě výše uvedeného:

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,
    })

Symbolicky propojuji stejný skript, takže proměnné (server_host , server_port a remote_dir ) změnit web od webu.

Protože Fabric zvládne odchozí připojení, můžete také udělat toto:

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

To funguje, ale výstup je předřazen řetězcem z Fabric. Tím byla výzva přes 80 znaků dlouhá a i když mám spoustu rozlišení, je to na mě moc 🙂

Související:Jednotný ekvivalent funkce „komentářů“ KDE?
Ubuntu
  1. Zřetězit konkrétní soubory do jednoho jediného souboru?

  2. Ssh, Sudo, pak stáhnout?

  3. Vykonat konkrétní příkaz v daném adresáři, aniž byste do něj cd’ing?

  1. Ssh – Pokus o připojení SSH na server a získání Key_load_public:Žádná taková chyba souboru nebo adresáře?

  2. Jak schválit konkrétní počítače pro SSH do počítače s vypnutým ověřováním hesla?

  3. Omezit přihlášení SSH na konkrétní IP nebo hostitele

  1. Jak klonovat úložiště Git do konkrétní složky

  2. Ssh – Omezení uživatele Ssh/scp/sftp na adresář?

  3. Ssh a oprávnění k domovskému adresáři?