14 votos

Sesión de SSH nunca se cierra, al ejecutar "apt-get install"

Problema

Cuando se ejecuta apt-get install en una sesión de SSH, la sesión se cierra nunca. Ejemplo:

ssh user@target "sudo apt-get -y install my_package"

El my_package no se ha instalado correctamente, pero en la sesión de SSH sólo cuelga abierta.

Pregunta

Es allí cualquier flag para pasar SSH para obtener apt-get a trabajar?


Información Adicional

Contexto

Instalación remota se utiliza para la automatización de la implementación de un paquete en un servidor de integración. Tan pronto como nos empuje a algunos cambios en el código a un repositorio, un trabajo que se extrae en el código, construye el paquete, y se despliega en la integración para comprobar que todo funciona bien (en cuanto a que la implementación se refiere).

Ya Intenté Y Notas

  • La misma sesión de SSH ejecución apt-get update cierra limpiamente. Tenga en cuenta que apt-get update no es interactivo, mientras que apt-get install es. Esto puede sugerir que la interactividad es un problema.
  • Un comando como ssh user@target "sudo apt-get install my_package && echo Hello" nunca llega a la echo.
  • debconf se queja de que no encuentra una agradable interfaz (Pantalla, Readline), y cae de nuevo a Teletipo (aunque Readline está disponible).
  • En relación a la debconf del frontend, pasando -t a fuerza de TTY con SSH no ayuda. Ni DEBIAN_FRONTEND=noninteractive.
  • Todo fue hecho en Ubuntu 12_04 LTS.

6voto

Eric Platon Puntos 265

La siguiente respuesta en SF hizo el truco:

ssh falla la ejecución remota de comandos cuando se ejecuta desde cron script de bash

El -t flag de las fuerzas de un pseudo-tty asignación, excepto quizás cuando no hay TTY localmente. Pero la aprobación de la flag dos veces como en -t -t sólo pretende hacerlo. Y que se solucionó el problema.

Ver el SSH documentación:

-t de la Fuerza de pseudo-tty asignación. Esto puede ser usado para ejecutar arbitrarias basadas en la pantalla programas en una máquina remota, que puede ser muy útil, por ejemplo, cuando la aplicación de menú de servicios. Múltiples opciones de fuerza de tty asignación, incluso si ssh no tiene local tty.

Ahora, ¿por qué ese trabajo? Resulta que debconf no se queja más sobre la interfaz de usuario en los registros. Por ello creo que la doble -t conjuntos (señuelos?) debconf como sea necesario, lo que permite a apt-get install realización al final de la sesión de SSH limpiamente.

1voto

koressak Puntos 176

Mientras miraba a través de ella, esto puede hacer el trabajo. Llamar a cualquier comando debe ser seguido por la salida y heredoc. Encuentra el solutin pero no he probado personalmente.

ssh user@myremotemachine <<-EOF
free -m
exit
EOF

Respuesta Original viene de aquí: http://www.thetechrepo.com/main-articles/529-execute-a-command-remotely-over-ssh-and-then-close-the-connection

Espero que ayude.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: