¿Puedo SSH en un directorio específico?

9

Yo SSH en una multitud de servidores diferentes todos los días y algunos de ellos tienen diferentes estructuras de sistema de archivos para sus sitios web. Cada vez que cambio el servidor, tengo que averiguar dónde voy a llegar a los archivos que realmente quiero (porque es muy raro que quiera estar ~).

Utilizo los archivos de Fabric para automatizar todas mis acciones (empujar a git, SSH automatizado al servidor para extraer de git, reiniciar la aplicación web, cambiar las dependencias, etc.), por lo que me preguntaba si no podría decirle que también quiero SSH en el directorio correcto para que pueda ejecutar fab sshy estar en una sesión SSH normal, justo en el lugar correcto y comenzar a trabajar de inmediato.

Sin embargo, esto no se trata de Fabric; Por favor ignórelo. Fabric solo ejecuta un lote de comandos. Mi argumento es con el sshcomando. Eso es lo que le diré a Fabric que ejecute.

Entonces, ¿cómo puedo acceder ssha cdun directorio específico al iniciar sesión?

Nota: esto no puede ser un servidor o una cosa de todo el usuario. Tengo varios sitios web con un solo usuario en algunos servidores, por lo que pegar algo ~/.bashrcno funcionaría para mí.

Oli
fuente

Respuestas:

9

Bueno, sabía que podía ejecutar algo al iniciar sesión, pero sabía que saldría inmediatamente después de ejecutarlo. Lo que ahora recuerdo es que puedo ejecutar todo lo que quiera en un servidor remoto. ¡Puedes encadenar los comandos juntos!

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

Ahora puedo decirle a la tela que haga eso y estamos lejos. Simple.


Dije que no tenía nada que ver con el Fabric, pero aquí está la nueva parte de mi script de fabric también, basado en lo anterior:

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

Me SYMLINK el mismo guión en torno a lo que las variables ( server_host, server_porty remote_dir) el cambio de sitio a sitio.

Debido a que Fabric puede manejar la conexión saliente, también puede hacer esto:

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

Esto funciona, pero la salida se antepone con una cadena de Fabric. Esto hizo que el mensaje diera más de 80 caracteres y, aunque tengo toneladas de resolución, eso es demasiado para mí :)

Oli
fuente