Pregunta Ejecuta varios comandos desde un archivo después de iniciar sesión en PuTTY desde un archivo bat


He escrito un archivo bat en el que tengo lo siguiente:

putty.exe -t -load "ABC" -l username -pw password -m "C:\Users\pathasai\Desktop\abc.txt"

En mi abc.txt he escrito algunos comandos que quiero que se ejecuten en PuTTY, pero cuando ejecuto el archivo bat, no puedo ejecutar los comandos. Recibo el comando de error no encontrado. Por ejemplo, digamos que nuestro archivo abc.txt tiene solo un comando: pbrun. Está diciendo comando no encontrado. (Recibo este error en el terminal de masilla).

¿Cómo obtengo múltiples comandos para ejecutar uno después del otro desde el archivo abc.txt?


1


origen


Deberia de funcionar. ¿Puedes conectarte al cliente normalmente usando masilla? Funcionó para mí con putty.exe -ssh me@192.168.100.194 -m test.txt donde test.txt contiene tres líneas: echo "hello" echo "goodbye" sleep 10s - en este caso, es un Linux al que me estoy conectando y, por lo tanto, el archivo guardado test.txt (abc.txt en su caso) debe guardarse con los extremos de línea de Linux, es decir, LF no CR + LF. - gogoud
Hola, estoy trabajando en Windows ... y funciona cuando normalmente abro la masilla y me conecto con el servidor y ejecuto los comandos ... Pero con la forma en que estoy haciendo su problema de encajamiento ... Y no lo conseguí tu última línea ... - saiyam
sí, yo también, me refiero a la máquina que estaba conectando a fue linux Si desea conectarse a una máquina de Windows, debe estar configurado para dicha conexión remota. ¿A qué tipo de máquina te estás conectando? - gogoud
Ummmbthat tengo que fastidiar ... pero ¿puedes decirme cuál sería el motivo para que el comando tgat no se encuentre como putty directamente funciona bien, pero desde el archivo txt no es ... el comando Pbrun no encontrado ..... ¿Alguna cosa especial que necesito agregar al archivo de texto? ¿O oliendo así? - saiyam
probablemente porque guardas el archivo con la terminación de línea de Windows para que vea pbrun \ x013, es decir, con un carácter de control al final. Si usa el editor EditPad Pro, puede elegir guardar con terminaciones de línea Unix (Convertir / A UNIX). Otros editores decentes tendrán una opción similar, pero no el Bloc de notas de Windows. - gogoud


Respuestas:


ejecutar varios comandos desde un archivo después de iniciar sesión en masilla desde un archivo bat

No puedes iniciar sesión en PuTTY. PuTTY es un SSH cliente aplicación que no tiene autenticación.

Puede usar PuTTY para iniciar sesión en una computadora servidor que proporciona un servicio SSH. Normalmente, este sería un servidor Linux. Es el servidor que requiere que inicie sesión en él.

En mi abc.txt he escrito algunos comandos que quiero que se ejecuten en la propia masilla

No puede ejecutar comandos arbitrarios en PuTTY.

Puede usar PuTTY para ejecutar comandos en un shell en el servidor.

Esos comandos deben estar presentes en el servidor y ser compatibles con el sistema operativo del servidor.

nuestro abc.txt tiene solo un comando: pbrun. Está diciendo comando no encontrado.

Eso significa que el comando pbrun es no un comando válido en el sistema operativo del servidor (esto no tiene nada que ver con PuTTY).

No todos los servidores de Linux tienen pbrun:

$ man pbrun
No manual entry for pbrun
$ pbrun
-bash: pbrun: command not found
$ uname
Linux
$

También debe tener cuidado con los finales de línea en sus comandos. Es probable que los archivos de Windows editados con bloc de notas tengan líneas que terminen con los dos caracteres de control ASCII Carriage-Return (CR o Control-M o ^ M) y Line-Feed (LF o Control-J o ^ J). Esperaría que PuTTY se ocupara de esto, pero puede que no (no lo he probado).

$ pwd
/
$ pwd^M
: command not found
$

Actualizar

Usé el Bloc de notas para crear este archivo, "commands.txt":

echo "this command works"
echo
echo "this command works too"
sleep 20 # so I can see

Usé este comando:

C:\temp>"C:\Program Files (x86)\PuTTY\putty.exe" rgb@server -m commands.txt

Obtuve este resultado:

this command works

                  this command works too

Me imagino que hay algún problema con stty o ajustes de PuTTY que afectan la operación de nueva línea, pero básicamente el -m El mecanismo funciona y, con un esfuerzo diligente, espero poder hacer que funcione correctamente.


1