2008-11-14 15 views
6

¿Cómo ejecuto un comando cada vez después de ssh'ing de una máquina a otra?¿Cómo ejecuto un comando cada vez después de ssh'ing de una máquina a otra?

por ejemplo

ssh mymachine 
stty erase ^H 

Yo prefiero tener "borrado stty^H" ejecutar cada vez que después de mi conexión ssh completa.

Este comando no puede ir simplemente a mi archivo .zshrc. es decir, para las sesiones locales, no puedo ejecutar el comando (arruina mis combinaciones de teclas). Pero lo necesito para mis sesiones remotas.

Respuesta

0

Suponiendo un objetivo Linux, lo puso en su .profile

+0

No funciona - ver la información de mi pregunta actualizada. – someguy

1

Si está ingresando en una caja * nix con una concha, por qué no ponerlo en su arranque del shell?

.bashrc o .profile en la mayoría de los casos.

+0

No funciona - ver la información actualizada de mi pregunta. – someguy

+0

Justo lo suficiente - Yo iría con la sugerencia de @ geocar entonces. –

7

Usted puede poner algo como esto en el archivo de inicio del shell:

if [ -n "$SSH_CONNECTION" ] 
then 
    stty erase ^H 
end 

La prueba -n determinará si SSH_CONNECTION se establece lo que sucede sólo cuando se haya identificado a través de SSH.

0

Intente agregar el comando debajo del final de su ~/.bashrc. Se debe salir al cerrar la sesión. ¿Desea que se ejecute este comando solo al cerrar sesión en una sesión ssh? ¿Qué hay de las sesiones locales, etc.?

trap 'stty erase ^H; exit 0' 0 

Probablemente se podría configurar un archivo de .logout de/etc/perfil utilizando el mismo patrón también.

10

poner las órdenes en ~/.ssh/rc

+0

+1, sabía que tenía que haber una mejor manera de hacerlo. –

+0

+1, no sabía que esto existía. –

0

una respuesta para nosotros, pantalla/usuarios byobu: "Debe estar conectado a un terminal" solución

del geocar no funcionará como pantalla se quejan de que. (Esto es probablemente causado por el hecho de que .ssh/rc se procesa antes de que se inicie el shell. Consulte la sección LOGIN PROCESS en man 8 sshd).

La solución de Robert es mejor aquí, pero como la pantalla y byobu abren su propia instancia de bash, debemos evitar la recurrencia infinita. Así que aquí se ajusta byobu-Versión:

## RUN BYOBU IF SSH'D ## 
## '''''''''''''''''' ## 
# (but only if this is a login shell) 

if shopt -q login_shell 
then 
    if [ -n "$SSH_CONNECTION" ] 
    then 
     byobu 
     exit 
    fi 
fi 

Tenga en cuenta que también añadí exit después byobu, ya que la OMI si se utiliza byobu, en primer lugar, que normalmente no quiere hacer nada fuera de ella.

Cuestiones relacionadas