Posso SSH em um diretório específico?

8

Eu faço o SSH em vários servidores diferentes todos os dias e alguns deles têm diferentes estruturas de sistema de arquivos para seus sites. Cada vez que eu mudo de servidor, eu tenho que descobrir onde eu vou chegar aos arquivos que eu realmente quero (porque é muito raro que eu queira estar em ~ ).

Eu uso arquivos do Fabric para automatizar todas as minhas ações (empurrando para o git, SSH automatizado para o servidor para puxar do git, reiniciando o aplicativo da web, alterando dependências, etc), então eu queria saber se eu não poderia também dizer isso que eu quero SSH no diretório certo para que eu possa executar fab ssh e estar em uma sessão SSH normal, apenas no lugar certo e começar a trabalhar imediatamente.

Isso não é sobre o Fabric; por favor, ignore-o. O Fabric está executando apenas um lote de comandos. Meu argumento é com o comando ssh . É o que vou dizer ao Fabric para ser executado.

Então, como posso obter ssh para cd em um diretório específico no login?

Nota: isso não pode ser uma coisa do servidor ou do usuário. Eu tenho vários sites sob um usuário em alguns servidores, então colocar algo em ~/.bashrc não funcionaria para mim.

    
por Oli 25.02.2013 / 13:32

1 resposta

8

Bem, eu sabia que poderia fazer algo no login, mas sabia que sairia logo após a corrida. O que eu lembro agora é que eu posso correr tanto quanto eu gosto em um servidor remoto. Você pode apenas 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 script do meu fabric, 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 linkei simbolicamente o mesmo script para que as variáveis ( server_host , server_port e 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 é prefixada com uma string do Fabric. Isso fez com que o prompt demorasse mais de 80 caracteres e enquanto eu tenho toneladas de resolução, isso é demais para mim:)

    
por Oli 25.02.2013 / 13:34