8

... L'esecuzione dello stesso file batch utilizzando psexec dallo slave funziona direttamente senza fascino.L'esecuzione di un file batch remoto tramite psexec tramite Jenkins non riesce

Consentitemi di fornire ulteriori informazioni. Jenkins e il suo schiavo si trovano in un dominio separato rispetto al nostro computer di destinazione.

Quando eseguo il file batch come questo:

"D:\Temp\PsTools\PsExec.exe" \\<targetmachine> -u <targetdomain\targetdomainuser> -p <pwd> -accepteula "d:\temp\remotescript.bat" arg1 arg2 

direttamente dallo slave (Remote Desktop presa in consegna la macchina e aprire un prompt dei comandi) questo funziona perfettamente.

Quando si entra in un passo di generazione batch di Windows in Jenkins non c'è output visibile e vedo solo uno spinner ma non succede più nulla e la build si blocca facendo accodamento a qualsiasi altra build creando un enorme backlog. Apparentemente ricevo un controllo di errore in cui il mio utente Jenkins tenta di accedere al computer di destinazione, tuttavia ho specificato un utente di dominio con adminrights sulla targetmachine (un domainuser per il dominio del computer di destinazione).

Qualcuno ha idea del motivo per cui l'utente tenta di accedere con altre credenziali rispetto a quelle fornite e perché funziona direttamente dallo Jenkins-slave?

O qualsiasi altro modo per raggiungere questo obiettivo (eseguire un file batch sul computer remoto) è più che benvenuto.

risposta

5

Questo è un problema noto con psexec:

http://forum.sysinternals.com/psexec-always-hangs-when-run-from-java_topic5013.html

Program output lost when passed through PsExec

Si può provare con XCMD: http://feldkir.ch/xcmd.htm (non funzionerà contro localhost)

+0

localhost è alcuna preoccupazione. Ho avuto un piccolo problema nell'ottenere il file xCmd a causa del falso virusalert, ma l'ho fatto funzionare. Devo indagare su un piccolo errore probabilmente a causa del superamento dei miei argomenti. –

+2

Ho avuto un problema con xCmd quando connesso a server a 64 bit: "Impossibile avviare il servizio remoto Errore: 2 - Il sistema non riesce a trovare il file specificato." Un modo semplice per risolvere è copiare xCmdSvc.exe da C: \ Windows \ System32 a C: \ Windows \ SysWOW64. –

+0

Buona osservazione! Grazie. – npocmaka

-1

paio di provare cose ...

  1. opzione del parametro aggiuntivo 0 dopo l'AcceptEULA nel comando che dovrebbe uccide ogni processo psexec esistente che è appeso e iniziare l'elaborazione della psexec

  2. verificare la macchina per 32 bit o 64 bit ..

    a 64 bit il psexec viene cercato in C: \ Windows \ system32
    per 32 bit il psexec viene cercato in C: \ Windows \ SysWOW64

nel lavoro Jenkins è possibile impostare la versione di MSBuild per 64 BIT o 32 BIT acc ordinatamente e dovrebbe funzionare come previsto.

2

Prova questa, questo funzionerà

"D:\Temp\PsTools\PsExec.exe" \\\\remoteMachine -u username -p password /accepteula -h cmd /c "C:\remotescript.bat" 
5

PAExec è un clone funzionale di PSExec e ci permette di vedere l'uscita tramite Jenkins ecc.

http://www.poweradmin.com/paexec/

XCMD è quello che abbiamo usato di HP ma per qualche ragione non sta funzionando al mio concerto corrente.

Non so quando PAExec è apparso ma sembra una soluzione ideale. Poco dopo averlo scoperto (oggi) ho individuato un problema intermittente con una Jenkins Deployment Pipeline molto lunga/coinvolta.

+2

Paul, grazie mille! Ho avuto lo stesso problema, che invocare Psexec tramite Jenkins restituisce solo 80 caratteri per lo stdout. PAExec funziona perfettamente. Vedo tutto lo stdout nell'output di Jenkins! – akozin

+1

@ Guillaume ~ Grazie per aver postato questa domanda! Trovato utile dopo 3 anni. Paul e akozin grazie, ci stavo provando per più di due settimane! Non so come ti ringrazierò su questo. – HunterrJ

+0

Paul, grazie mille ... stavo cercando questo dato così tanti giorni e con la tua risposta che era attraverso in 2 minuti ... salvato la vita ..: D – Gargi