Czy mogę przeprowadzić SSH w określonym katalogu?

8

I SSH na wiele różnych serwerów każdego dnia, a niektóre z nich mają różne struktury systemów plików na swoich stronach internetowych. Za każdym razem, gdy zmieniam serwer, muszę się dowiedzieć, gdzie mam dostać się do plików, których naprawdę potrzebuję (ponieważ bardzo rzadko chcę być w ~ ).

Używam plików Fabric, aby zautomatyzować wszystkie moje działania (pchanie do git, automatyczne wysyłanie SSH na serwer, pobieranie z git, restartowanie aplikacji sieciowej, zmienianie zależności, itd.), więc zastanawiałem się, czy nie mogę tego również powiedzieć że chcę SSH w odpowiednim katalogu, aby móc uruchomić fab ssh i być w normalnej sesji SSH, we właściwym miejscu i natychmiast rozpocząć pracę.

Tu nie chodzi o Fabric; proszę zignoruj ​​to. Tkanina uruchamia pakiet poleceń. Moja argumentacja dotyczy polecenia ssh . Właśnie to polecę Fabricowi do uruchomienia.

Jak mogę uzyskać ssh do cd do określonego katalogu podczas logowania?

Uwaga: ten nie może być serwerem lub użytkownikiem. Mam kilka witryn pod jednym użytkownikiem na niektórych serwerach, więc trzymanie czegoś w ~/.bashrc nie byłoby dla mnie przydatne.

    
zadawane Oli 25.02.2013, 13:32
źródło

1 odpowiedź

8

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

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

Teraz mogę po prostu powiedzieć materiałowi, żeby to zrobić i nas nie ma. Proste.

Powiedziałem, że nie ma to nic wspólnego z Fabricem, ale tutaj jest nowa część skryptu do tworzenia tkanin, w oparciu o powyższe:

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

Dowiązuję ten sam skrypt, więc zmienne ( server_host , server_port i remote_dir ) zmieniają się z witryny na witrynę.

Ponieważ Fabric może obsłużyć połączenie wychodzące, możesz to zrobić po prostu:

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

To działa, ale wyjście jest poprzedzone ciągiem z Fabric. To spowodowało, że zachęciłem ponad 80 znaków i gdy mam masę rozdzielczości, to dla mnie za dużo:)

    
odpowiedział Oli 25.02.2013, 13:34
źródło

Przeczytaj inne pytania na temat tagów