Posso fazer o SSH em um diretório específico?

9

Eu SSH em uma infinidade de servidores diferentes todos os dias e alguns deles têm estruturas de sistema de arquivos diferentes para seus sites. Cada vez que troco de servidor, tenho que descobrir onde vou chegar aos arquivos que realmente quero (porque é muito raro querer entrar ~).

Eu uso arquivos do Fabric para automatizar todas as minhas ações (push para git, SSH automatizado para o servidor extrair do git, reiniciar o aplicativo da web, alterar dependências etc.), então fiquei pensando se eu também não poderia dizer que quero para o SSH no diretório certo, para que eu possa executar fab sshe estar em uma sessão SSH normal, no lugar certo e começar a trabalhar imediatamente.

Isso não é sobre Fabric; por favor ignore. O Fabric está apenas executando um lote de comandos. Meu argumento é com o sshcomando É o que vou dizer ao Fabric para executar.

Então, como posso obter ssha cdem um diretório específico no login?

Nota: isso não pode ser um servidor ou algo para todo o usuário. Eu tenho vários sites sob um usuário em alguns servidores, portanto, colar algo ~/.bashrcnão funcionaria para mim.

Oli
fonte

Respostas:

9

Bem, eu sabia que poderia executar algo no login, mas sabia que sairia logo após a execução. O que agora me lembro é que posso executar o quanto quiser em um servidor remoto. Você pode simplesmente encadear os comandos juntos!

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

Agora posso dizer ao tecido para fazer isso e estamos fora. Simples.


Eu disse que não tinha nada a ver com o Fabric, mas aqui está a nova parte do meu script de fabric também, com base no acima:

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

Eu vinculo o mesmo script para que as variáveis ​​( server_host, server_porte remote_dir) mudem de site para site.

Como o Fabric pode lidar com a conexão de saída, você também pode fazer isso:

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

Isso funciona, mas a saída é anexada com uma sequência do Fabric. Isso fez com que o prompt tivesse mais de 80 caracteres e, enquanto eu tenho toneladas de resolução, isso é demais para mim :)

Oli
fonte