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?