GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Ssh en un directorio específico?

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

Uso 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 dependencias, etc.), así que me preguntaba si no podría decirle también que quiero a SSH en el directorio correcto para poder ejecutar fab ssh y 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 está ejecutando un lote de comandos. Mi argumento es con ssh dominio. Eso es lo que le diré a Fabric que ejecute.

Entonces, ¿cómo puedo obtener ssh? a cd en un directorio específico al iniciar sesión?

Nota:esto no puede ser un servidor o cosa de todo el usuario. Tengo varios sitios web bajo un usuario en algunos servidores, así que pongo algo en ~/.bashrc no funcionaría para mí.

Respuesta aceptada:

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 simplemente encadenar los comandos juntos!

ssh [email protected] -t "cd /websites/website ; /bin/bash"

Ahora solo puedo decirle a fabric que haga eso y nos vamos. Sencillo.

Dije que no tenía nada que ver con Fabric, pero aquí también está la nueva parte de mi secuencia de comandos de fabric, basada 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,
    })

Hago un enlace simbólico del mismo script para que las variables (server_host , server_port y remote_dir ) cambia de un sitio a otro.

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 aviso tuviera más de 80 caracteres y, aunque tengo toneladas de resolución, eso es demasiado para mí 🙂

Relacionado:¿Equivalente de Unity a la característica de 'comentarios' de KDE?
Ubuntu
  1. Ssh:¿restringir un usuario de Ssh/scp/sftp a un directorio?

  2. ¿Ssh y permisos de directorio de inicio?

  3. Ssh, Sudo, luego descargar?

  4. ¿Ejecutar un comando específico en un directorio dado sin hacer CD?

  5. ¿Cómo aprobar computadoras específicas para SSH en una máquina con la autenticación de contraseña deshabilitada?

Cómo usar SSH en un contenedor Docker en ejecución y ejecutar comandos

Cómo SSH en un directorio particular en Linux

Cómo deshabilitar el inicio de sesión SSH para un usuario específico en Linux

Cómo SSH en una Raspberry Pi [Consejo para principiantes]

Cómo usar SSH en un contenedor Docker

cd en el directorio sin tener permiso