8

... Uruchamianie tego samego pliku wsadowego przy użyciu parametru psexec z urządzenia slave działa bezpośrednio bez żadnego atrybutu.Uruchamianie zdalnego pliku wsadowego przy użyciu parametru psexec za pomocą Jenkinsa kończy się niepowodzeniem.

Pozwolę sobie podać więcej informacji. Jenkins i jego niewolnik znajdują się w oddzielnej domenie niż nasza maszyna docelowa.

Kiedy uruchomić plik wsadowy tak:

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

bezpośrednio od Slave (Remote Desktop przejęcia maszyny i otwierając wiersz polecenia) działa to doskonale.

Podczas wpisywania go w kroku kompilacji wsadów w systemie Windows w Jenkinsach nie ma widocznych danych wyjściowych i widzę tylko pokrętło, ale nic już nie dzieje się i kompilacja zawiesza się w kolejce do dowolnej innej kompilacji powodującej ogromne zaległości. Najpierw otrzymuję audyt awarii, w którym mój użytkownik Jenkins próbuje zalogować się na maszynę docelową, ale określiłem użytkownika domainuser z uprawnieniami administratora na maszynie docelowej (domaineser dla domeny maszyny docelowej).

Czy ktoś ma pojęcie, dlaczego użytkownik próbuje zalogować się przy użyciu innych poświadczeń niż te, które zostały dostarczone i dlaczego działa to bezpośrednio z Jenkins-slave?

Lub jakikolwiek inny sposób osiągnięcia tego (uruchamianie pliku wsadowego na zdalnym komputerze) jest więcej niż mile widziany.

Odpowiedz

5

Jest to znany problem z PsExec:

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

Program output lost when passed through PsExec

Można spróbować z xCmd: http://feldkir.ch/xcmd.htm (nie będzie działać przeciwko localhost)

+0

Localhost nie stanowi problemu. Miałem problem z uzyskaniem pliku xCmd z powodu fałszywego wirusa, ale uruchomiłem go. Muszę zbadać jeden mały błąd prawdopodobnie z powodu przekazania moich argumentów. –

+2

Miałem problemy z xCmd po podłączeniu do serwerów 64-bitowych: "Nie można uruchomić usługi zdalnej Błąd: 2 - System nie może odnaleźć określonego pliku." Prostym sposobem naprawy jest skopiowanie pliku xCmdSvc.exe z C: \ Windows \ System32 do C: \ Windows \ SysWOW64. –

+0

Dobra uwaga! Dzięki. – npocmaka

-1

spróbować kilka rzeczy ...

  1. opcja parametr add 0 po ACCEPTEULA w Twoim poleceniem, które powinno zabija istniejący proces PsExec który odłożył słuchawkę i rozpocząć przetwarzanie Twój psexec

  2. sprawdzić maszynę dla 32-bitowej lub 64-bitowej ..

    dla 64-bitowego psexec jest poszukiwany w katalogu C: \ Windows \ system32
    dla 32-bitowego psexec jest poszukiwany w katalogu C: \ Windows \ SysWOW64

w jenkins pracy można ustawić msbuild wersję do 64 BIT lub 32 BIT wg ordingly i powinno działać zgodnie z oczekiwaniami.

2

Spróbuj tego, to będzie działać

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

PAExec jest funkcjonalny klon PsExec i pozwala nam widzieć wyjście poprzez Jenkins etc.

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

XCmd właśnie użyliśmy w HP, ale z jakiegoś powodu nie działa na moim obecnym koncert.

Nie wiem, kiedy pojawił się PAExec, ale wydaje się idealnym rozwiązaniem. Wkrótce po jego odkryciu (dzisiaj) przybraliśmy przerywany problem z bardzo długim/zaangażowanym Linuksem wdrażania Jenkinsa.

+2

Paul, bardzo ci dziękuję! Miałem ten sam problem, że wywołanie psexec przez Jenkins zwraca tylko 80 znaków do stdout. PAExec działa idealnie. Widzę wszystkie standardowe wyjścia w Jenkins! – akozin

+1

@ Guillaume ~ Dzięki za komentarz! Okazało się przydatne po 3 latach. Paul i Akozin dziękuję, próbowałem tego przez ponad dwa tygodnie! Nie wiem, jak będę ci wdzięczny. – HunterrJ

+0

Paul, dziękuję bardzo ... Próbowałem tego od tylu dni i z twoją odpowiedzią skończyłem w 2 minuty ... uratowałem moje życie ..: D – Gargi

Powiązane problemy