Czy mogę SSH do określonego katalogu?

9

Codziennie przesyłam SSH na wiele różnych serwerów, a niektóre z nich mają różne struktury systemu plików dla swoich stron internetowych. Za każdym razem, gdy zmieniam serwer, muszę ustalić, gdzie mam dostać się do plików, które naprawdę chcę (ponieważ bardzo rzadko chcę tam być ~).

Używam plików Fabric do automatyzacji wszystkich moich działań (wypychanie do git, zautomatyzowane SSH do serwera, aby pobierać z git, restartowanie aplikacji sieci web, zmiana zależności itp.), Więc zastanawiałem się, czy nie mogłem też powiedzieć, że chcę do SSH do odpowiedniego katalogu, abym mógł uruchomić fab sshi być w normalnej sesji SSH, tylko we właściwym miejscu i natychmiast rozpocząć pracę.

Nie chodzi jednak o Fabric; proszę zignoruj ​​to. Fabric po prostu uruchamia zestaw poleceń. Mój argument dotyczy sshpolecenia. Właśnie to powiem Fabricowi uruchomić.

Jak mogę dostać sshsię cddo określonego katalogu podczas logowania?

Uwaga: nie może to dotyczyć serwera ani użytkownika. Mam kilka stron internetowych pod jednym użytkownikiem na niektórych serwerach, więc włożenie czegoś ~/.bashrcnie działałoby dla mnie.

Oli
źródło

Odpowiedzi:

9

Wiedziałem, że mogę uruchomić coś przy logowaniu, ale wiedziałem, że wyjdzie to natychmiast po uruchomieniu. Teraz pamiętam, że mogę uruchomić tyle, ile chcę na zdalnym serwerze. Możesz po prostu połączyć w całość polecenia!

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

Teraz mogę po prostu powiedzieć tkaninie, żeby to zrobiła i nas nie ma. Prosty.


Powiedziałem, że to nie ma nic wspólnego z Fabric, ale oto nowa część mojego skryptu Fabric, oparta na powyższym:

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 podlinkowujemy ten sam skrypt wokół tak zmiennych ( server_host, server_porti remote_dir) zmiana z miejsca na miejsce.

Ponieważ Fabric obsługuje obsługę połączeń wychodzących, możesz również po prostu to zrobić:

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

To działa, ale dane wyjściowe są poprzedzone ciągiem z Fabric. To sprawiło, że podpowiedź przekroczyła 80 znaków i chociaż mam mnóstwo rozdzielczości, to dla mnie za dużo :)

Oli
źródło