¿Hay alguna manera de hacer que PuTTY "cierre la ventana al salir" automáticamente desde la línea de comando?

¿Hay alguna manera de hacer que PuTTY "cierre la ventana al salir" automáticamente desde la línea de comando?

Estoy intentando crear una máquina sin cabeza que ejecute PuTTY automáticamente al iniciar desde un script y se reinicie automáticamente si el programa se cierra.

Si bien esto técnicamente funciona bien en la mayoría de las situaciones, si hay problemas de red, PuTTY simplemente se bloqueará y aparecerá una ventana emergente que indicará que se ha desconectado.

He visto la opción "cerrar ventana al salir" y sé que esto es lo que necesito, pero solo puedo hacer esto desde la ventana; no he encontrado una manera de cambiar esta configuración desde la línea de comando.

¿Alguien sabe si esto es posible y qué configurar... o si simplemente es posible cambiar los valores predeterminados ya que esto es todo lo que se ejecutará en esta máquina?

Respuesta1

La mejor solución sería crear una sesión personalizada en PuTTY (con la configuración "Cerrar ventana al salir" cambiada) y cargar esa sesión a través de la línea de comando, pero si no tiene acceso a la GUI, eso no es fácil. Sin embargo, no conozco ninguna forma de especificar configuraciones individuales a través de la línea de comando.

Sin embargo, si puede editar el registro, puede crear una sesión creando una nueva clave en

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions

donde luego puede agregar valores correspondientes a la configuración de la sesión en la GUI. Por lo tanto, si desea que la ventana se cierre siempre al salir, debe agregar un valor DWORD llamado CloseOnExit que contenga el valor 2. Todo lo demás que no se especifique permanecerá como valor predeterminado.

Luego agregarías

-load "session name"

a la cadena de su línea de comando, donde "nombre de sesión" es el nombre de la clave que creó. Coloque cualquier otra opción de línea de comando después de eso (como servidor, nombre de inicio de sesión, contraseña, etc.) y estará listo.

Lo he probado yo mismo, pero aún así es prudente hacer una copia de seguridad de su registro antes de realizar cualquier edición manual.

Alternativamente, hay tenedores de PuTTY (comoBandeja de masilla) que cuentan con reconexión automática después de una interrupción, aunque no puedo garantizar qué tan bien funcionan.

Respuesta2

Cuando recibe este error:

error de masilla

entonces puedes escribir unGuión automáticoque espera a que aparezca esta ventana y lo reconoce:

$title = "PuTTY Fatal Error"
WinWaitActive( $title )
ControlClick($title,"", "Button1", "primary")
sleep(100)
WinClose("PuTTY (inactive)","")

También puede compilar el script en un archivo .exe pequeño e independiente. Coloque esto en su archivo por lotes antes de iniciar PuTTY.

Respuesta3

Sé que llego tarde al juego, pero también puedes usar PuTTY plink.exe. Toma los mismos parámetros que PuTTY, pero se ejecuta en línea de manera muy similar al sshcomando. También bloquea el procesamiento y devuelve un estado de error, lo que podría resultar muy útil para una conexión fallida en medio de un montón de comandos.

información relacionada