In uno script batch DOS, sto eseguendo un singolo comando su un computer remoto (anche Windows) usando il plink. Precedentemente, questo comando veniva eseguito solo sulla macchina locale e faceva affidamento sul codice di ritorno per determinare il successo. C'è un modo per ottenere facilmente queste informazioni attraverso plink?ottiene il codice di ritorno da plink?
risposta
Questo non è possibile con plink
. Il consenso corrente è di avere lo script remoto echo
il suo codice di uscita in un file di registro, quindi utilizzare pscp
per trasferire il file di registro sul computer locale.
Vedere 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
Anche per la preoccupazione di @ John Wiersba a quando la connessione non può essere fatto, questo sembra essere fissato
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
notare la tubazione di echo Y
anche ... questo consente di accettare automaticamente l'impronta digitale del server (un po 'pericoloso per non dire altro ... ma il nostro server di login è bilanciato, quindi ottieni sempre impronte digitali diverse :()
Tuttavia, come note @LeonBloy, plink ha ancora alcune condizioni di connessione che restituiscono un codice di uscita zero. Se conosci il tuo intervallo di codice di uscita e non hai un buon modo di comunicare a Windows tramite un file. Puoi +3 al codice di uscita (se sai che il codice di uscita non sarà mai == 253-255) o potresti applicare un OR bit a bit (ti suggerirei exit $(($?|128))
- in bash).
Oppure, se non ti interessa il codice esatto di uscita, puoi restituire 2 per il successo e zero per il fallimento. Pertanto un codice di non uscita due indica un errore. In bash questo sarebbe: echo $((($?==0) << 1))
. Questa sarebbe di gran lunga la soluzione per scopi generali più robusta, ma dovresti assicurarti che il tuo codice di uscita sia registrato per il debug-abilità.
_ .. questo sembra essere fisso_ ... fino a un punto: ''> plink.exe -batch -ssh -i key.ppk [email protected] Utilizzo del nome utente "pi". Il server ha rifiutato la nostra chiave > echo % ERRORLEVEL% '' – leonbloy
- 1. Bash ignora l'errore e ottiene il codice di ritorno
- 2. 127 Codice di ritorno da $?
- 3. Ajax ottiene un valore di ritorno da php?
- 4. Chiama Python da PHP e ottieni il codice di ritorno
- 5. Come posso ottenere il codice di ritorno da CustomAction?
- 6. risparmio codice di ritorno e il ritorno in bash
- 7. ottiene il codice delle funzioni in Matlab?
- 8. Errore di esecuzione, codice di ritorno 1 da org.apache.hadoop.hive.ql.exec.MapRedTask
- 9. TYPO3 Fluid Template ottiene il codice lingua
- 10. exit con un codice di ritorno da QML
- 11. Valori di ritorno da codice a asp.net ajax endrequest
- 12. Hive Query Execution Error, codice di ritorno 3 da MapredLocalTask
- 13. Configurare msysgit per usare mastice/plink
- 14. Perché "local" scopa il codice di ritorno di un comando?
- 15. Come utilizzare il codice di ritorno di bash in condizionale?
- 16. Codice di ritorno per il metodo HTTP errato nell'API REST?
- 17. Come ottenere un codice di ritorno "sottoprocesso"
- 18. PHP ottiene il codice di risposta dell'header http senza cURL
- 19. genera uno script di shell da un altro script e controlla il codice di ritorno
- 20. ottiene il valore stringa da UISegmentedControl
- 21. ottiene il valore da un qlineedit
- 22. ANT non ottiene il codice di uscita restituito da uno script python
- 23. ottiene PID da paramiko
- 24. Android ottiene il percorso di origine video da VideoView
- 25. Valore di ritorno da Thread
- 26. ritorno da rotaie di controllo
- 27. ottiene bitmap da bitmapdescriptor
- 28. Come si ottiene il valore di una proprietà da PropertyInfo?
- 29. ottiene AST leggibile dall'uomo dal codice C++
- 30. Come si ottiene Images.xcassets sotto il controllo del codice sorgente?
Per il beneficio di chiunque stia leggendo questo oggi, forse questo era vero quando è stato scritto ma non è più vero. L'attuale versione di plink restituirà il codice di uscita remota quando si utilizza il protocollo ssh. – richb
... esempi di lavoro [** qui **] (http://stackoverflow.com/a/2988139/319204) e [** qui **] (http://superuser.com/a/130528). – TheCodeArtist
@richb: non esattamente vero. Plink 0.63 ha successo (stato di uscita 0) quando non è possibile stabilire una connessione. :-( –