
Tengo un pequeño problema al ejecutar PuTTY (desde la línea de comando) con-metroargumento. Por favor ayúdame con esto o sugiere una forma mejor si conoces una :)
El comando (de "Ejecutar"):
putty -ssh user@machine -pw password -m C:\test.txt
Comando "prueba.txt":
PROMPT_COMMAND='echo -ne "\033]0;'$( ifconfig | head -2 | tail -1 | awk '{print $2}')'\007"'
El problema:
Abre la sesión y luego la cierra inmediatamente.
¿Qué se supone que debe hacer? Abrir una sesión ssh desde la línea de comando con un título definido
Gracias.
Respuesta1
Creo que intentaste hacer algo similar aesta respuesta. Pero la cuestión es que los comandos de muestra proporcionados allí deben ejecutarse desde el archivo en el servidor.
No se pueden pasar como comando(s) para ejecutar usando el modificador -m. Este cambio de PuTTYes imitarel comportamiento del cliente SSH de línea de comandos de Linux:
ssh user@foo command
De esta manera, ssh inicia sesión user
en el foo
servidor, se ejecuta command
allí y simplemente sale. Parece que con -m PuTTY está haciendo exactamente lo mismo.
Mi sugerencia
es preparar un script en el servidor remoto y configurar PuTTY de una manera diferente. En primer lugar, debe crear un archivo con los comandos que desea ejecutar después de iniciar sesión, llamémoslo.title
cat > ~/.title
Luego simplemente escribe, o copia y pega lo que necesites allí, luego presiona Ctrl+D. Por ahora, simplemente probemos configurando el título:
echo -ne "\033]0;PuTTY\007"
Incluso puedes probar lo anterior directamente en la terminal. Si el título de la ventana de PuTTY no se cambia, es probable que su distribución ya esté configurada.variable PROMPT_COMMAND predeterminada. Puede confirmarlo ejecutando los siguientes comandos en la terminal
echo $PROMPT_COMMAND
unset PROMPT_COMMAND
echo -ne "\033]0;PuTTY test\007"
La clave es desarmar el valor actual de PROMPT_COMMAND
la variable. Entonces el último comando debería establecer el título de la ventana en PuTTY test
.
Mi solución
que me funciona es preparar una sesión en PuTTY, conCuadro "Comando remoto" en la GUIajustado a:
/bin/bash --rcfile ~/.title
Solo recuerde proporcionar el nombre de esta sesión (por ejemplo: SessionName) y presione el botón "Guardar" en la primera página de la configuración de PuTTY, cerca de la lista "Sesiones guardadas" :)
Luego puedes iniciar PuTTY y decirle que cargue esta sesión.
putty -load SessionName -l user -pw password
Sí, es triste, pero no existe un equivalente en la línea de comandos del cuadro "Comando remoto" para una sesión guardada. Por eso hay que superar todos estos obstáculos :(
Versión TL;DR
Suponiendo que realices todos estos pasos correctamente, todo debería funcionar bien:
- crear
~/.title
script en la máquina remota - prepare una sesión con el comando remoto que ejecute Bash, que se ejecutará
~/.title
- Dígale a PuTTY que cargue la sesión preparada al inicio, especificando el usuario y la contraseña.
Consejo profesional
En lugar de especificar contraseñas en texto claro en la línea de comando (y posiblemente en scripts), debe aprender a usar claves SSH y ejecutar 'Pageant' (agente de autenticación PuTTY) en la bandeja de Windows.
Respuesta2
No tengo un ssh para probarlo ahora perohttp://www.derkeiler.com/Newsgroups/comp.security.ssh/2012-04/msg00005.html
"Si solo desea que la ventana permanezca abierta para que usted también la mire, coloque el modo de suspensión 10 al final de su secuencia de comandos durante una espera de 10 segundos. Si desea usar el shell, úselo exec /bin/bash
al final. Shai".
Otros dos enlaces que ofrecen una idea.
PuTTY: ejecute un comando remoto después de iniciar sesión y mantenga el shell en ejecución
¿Cómo elijo lo que aparece en la barra de título de PuTTY desde Linux?
Añadido por
lo siguiente no usa PuTTY, usa openssh en cygwin. El a.a
archivo podría contener ls o comandos para cambiar el mensaje. Es local.
$ ssh 127.0.0.1 "cat | bash" < a.a
relacionado, ver la respuesta que acabo de publicar en:https://unix.stackexchange.com/questions/87405/how-can-i-execute-local-script-on-remote-machine-and-include-arguments/208952#208952