En una secuencia de comandos por lotes de DOS, estoy ejecutando un solo comando en una computadora remota (también Windows) usando plink. Anteriormente, este comando solo se ejecutaba en la máquina local y confiaba en el código de retorno para determinar el éxito. ¿Hay alguna forma de recuperar fácilmente esta información a través del plink?obtener código de retorno de plink?
Respuesta
Eso no es posible con plink
. El consenso actual es tener el script remoto echo
como código de salida en un archivo de registro, luego use pscp
para transferir el archivo de registro a la máquina local.
Ver http://fixunix.com/ssh/74235-errorlevel-capturing-plink.html.
con plink 0,66
C:\Code>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" [email protected] exit 42
C:\Code>echo %ERRORLEVEL%
42
también de preocupación de @John Wiersba acerca de cuándo una conexión no se puede hacer, esto parece ser fijo
C:\CodeMisc>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" [email protected] exit 42
Unable to open connection:
Host does not exist
C:\Code>echo %ERRORLEVEL%
1
También tenga en cuenta la tubería de echo Y
... esto le permite aceptar la huella digital del servidor automáticamente (un poco peligrosa, por decir lo menos ... pero nuestro servidor de inicio de sesión tiene equilibrio de carga, por lo que siempre obtendrá diferentes huellas dactilares :()
Sin embargo, como notas de @LeonBloy, plink todavía tiene algunas condiciones de conexión que devuelven un código de salida cero. Si conoce su rango de código de salida y no tiene una buena forma de comunicarse a través de un archivo. Podrías +3 al código de salida (si sabes que el código de salida nunca == 253-255) o podrías aplicar un OR a nivel de bits (sugeriría exit $(($?|128))
- en bash).
O bien, si no le importa el código de salida exacto, puede devolver 2 para el éxito y cero para el fracaso. Por lo tanto, un código de salida que no sea dos indicaría una falla. En bash esto sería: echo $((($?==0) << 1))
. Esta sería, de lejos, la solución de propósito general más robusta, pero debe asegurarse de que su código de salida esté registrado para la capacidad de depuración.
_ .. . Esto parece estar fijo_ ... hasta un punto: ''> plink.exe -batch -ssh -i key.ppk [email protected] Usando el nombre de usuario "pi". El servidor rechazó nuestra clave > echo % ERRORLEVEL% '' – leonbloy
- 1. Cómo obtener un código de retorno de subproceso
- 2. ¿Código de retorno o parámetro de salida?
- 3. Emacs, vagabundo, problema de plink en XP
- 4. Configurar Git para usar Plink
- 5. Obtener el valor de retorno de JOptionPane
- 6. Obtener el valor de retorno de fputcsv
- 7. Obtener valor de retorno de proceso
- 8. Obtener valor de retorno después de SetTimeout
- 9. Windows TortoiseHg plink cuelga DESPUÉS clon/push
- 10. Obteniendo el valor de retorno del código Javascript en Selenium
- 11. OpenSSL Verificar código de retorno: 20 (no se puede obtener el certificado de emisor local)
- 12. Verificar código de retorno: 20 (no se puede obtener el certificado de emisor local)
- 13. ¿Cómo puedo obtener el código de retorno de una acción personalizada?
- 14. Ejecute MsiExec desde PowerShell y obtenga el código de retorno
- 15. Obtener valor de retorno de procedimiento almacenado en C#
- 16. Llamar a Python desde el archivo Bat y obtener el código de retorno
- 17. ¿Cómo se puede obtener el código de retorno SSH con Paramiko?
- 18. Llamar a Python desde PHP y obtener el código de retorno
- 19. ¿Puedo obtener un valor de retorno de multiprocesamiento.Proceso?
- 20. Error de ejecución, código de retorno 1 de org.apache.hadoop.hive.ql.exec.MapRedTask
- 21. Código de estado HTTP específico de retorno Asp Classic
- 22. ¿Debería verificar el código de retorno de Getopt :: Long :: GetOptions?
- 23. ¿Cuál es la colmena: Código de retorno de 2 org.apache.hadoop.hive.ql.exec.MapRedTask
- 24. Grabación con E/S remotas, AudioUnitRender -50 código de retorno
- 25. Obtener el estado de retorno Y la salida del programa
- 26. Obtener el valor de retorno del procedimiento almacenado en ADO.NET
- 27. Obtener el valor de retorno de JDBC MSSQL
- 28. ¿Cómo obtener el valor de retorno de CHILD PROCESS?
- 29. ¿Cómo obtener el valor de retorno de xcodebuild?
- 30. ¿Cómo puedo obtener el código de retorno en Java después de ejecutar un comando de línea de comandos de Windows
Para el beneficio de cualquier persona que lea esto hoy, quizás esto fue cierto cuando fue escrito, pero ya no es cierto. La versión actual de plink devolverá el código de salida remoto cuando use el protocolo ssh. – richb
... ejemplos de trabajo [** aquí **] (http://stackoverflow.com/a/2988139/319204) y [** aquí **] (http://superuser.com/a/130528). – TheCodeArtist
@richb: No es exactamente cierto. Plink 0.63 tiene éxito (estado de salida 0) cuando no se puede establecer una conexión. :-( –