Forum PCLab.pl: Detekcja, jeżeli process zostanie zamknięty wstaje na nowo+wpisuje 3 linijki kodu - Forum PCLab.pl

Skocz do zawartości

Otwarty

Ikona Najnowsze pliki

Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

Detekcja, jeżeli process zostanie zamknięty wstaje na nowo+wpisuje 3 linijki kodu Oceń temat: -----

#1 Użytkownik jest niedostępny   kiedy_oni_placza 

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 87
  • Dołączył: Nd, 09 Sie 15

Napisany 14 Wrzesień 2019 - 22:37

Witam, mam pewien program na vmie, który niestety co jakiś czas crashuje, i potrzebuję go zrestartować.
Myślałem że najlepszym rozwiązaniem byłoby nauczenie napisania się takiej funkcji/znalezienie już istniejącej by po wykruciu brakującego procesu, uruchomił go na nowo
wpisał 3 linijki kodu w odstępach 10 sekund i tak w kółko, niestety nie wiem jak się za to zabrać ktoś nakieruje co w ogóle powinienem googlować?

#2 Użytkownik jest niedostępny   Viking 

  • Uzależniony od forum
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 1534
  • Dołączył: Wed, 15 Lis 06

Napisany 15 Wrzesień 2019 - 05:49

A zewnętrzny proces nadzorujący typu supervisor?

#3 Użytkownik jest niedostępny   Kitu 

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 40
  • Dołączył: Nd, 24 Sty 16

Napisany 15 Wrzesień 2019 - 11:20

Podstawowe pytanie - Windows czy Linux?

#4 Użytkownik jest niedostępny   kiedy_oni_placza 

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 87
  • Dołączył: Nd, 09 Sie 15

Napisany 15 Wrzesień 2019 - 19:34

To windows 10, supervisor z tego co widzę jest na linuxa, a ja nie mam opcji zmiany zbytnio bo na linuxie w ogóle nie opdali(wymaga net frameworka), i już się namęczyłem z kamuflażem VM'a w rejestrze konfigach itp
Program napisany w frameworku po prostu co jakieś 2h crashuje i ciągle muszę ręcznie go ponownie odpalać, odpalenie to po prostu jak pisałem w pierwszym poście
1 odpalenie procesu, 2 wpisanie 3 linijek w odstępie czasowym jakimś 10 s (login,pass,komenda) i to tyle dalej już wszystko ma zautomatyzowane.

Ten post był edytowany przez kiedy_oni_placza dnia: 15 Wrzesień 2019 - 19:38


#5 Użytkownik jest niedostępny   Matt91111 

  • PipPipPipPip
  • Grupa: Forumowicze
  • Postów: 747
  • Dołączył: Nd, 22 Lip 12

Napisany 15 Wrzesień 2019 - 21:39

No to łatwizna, tylko dla ścisłości:
  • Czy ten program napisany .NET ma kontrolować jakiś inny zewnętrzny proces, czy chcesz napisać program który odpali ten .NET, i go będzie kontrolował?
  • Gdzie ma wpisywać te linijki? Do pliku? (log ??), jako argumenty podczas uruchamiania procesu?, do kontrolki w programie?

Ten post był edytowany przez Matt91111 dnia: 15 Wrzesień 2019 - 21:40


#6 Użytkownik jest niedostępny   Bono[UG] 

  • Wiecznie niewyspany...
  • PipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 20027
  • Dołączył: Pt, 27 Wrz 02

Napisany 15 Wrzesień 2019 - 21:51

A nie prościej zdebugować ten program skoro go w ten czy inny sposób napisałeś?
A przynajmniej zmodyfikować, tak żeby jako argumenty przyjmował login, hasło i komendę, bo rozumiem, że teraz czeka na wpisanie (według mnie trudne do wstrzyknięcia przez inny program).

Problem restartu można różnie rozwiązać:
-być może przy użyciu harmonogramu Windows o ile da się znaleźć właściwego triggera
-tak jak piszesz przy pomocy innego programu, który okresowo sprawdza czy ten właściwy jest uruchomiony
-napisać prostego bat-a, który w nieskończonej pętli uruchamia docelowy program (odpala się, skrypt w tym momencie czeka na jego zakończenie, jak się wywali to pętla przechodzi do kolejnej iteracji i znowu uruchamia program)

#7 Użytkownik jest niedostępny   kiedy_oni_placza 

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 87
  • Dołączył: Nd, 09 Sie 15

Napisany 15 Wrzesień 2019 - 23:22

Nie napisałem tego programu, crash log https://pastebin.com/wcs5ptDs
Ten program działa właśnie w konsoli CMD, kontroluje myszkę/klawiaturę dlatego jest na vmie zresztą.
Te kody/linijki wpisuje w tej konsoli login->hasło->start i tyle, nie muszę nic poza tym zrobić byleby wykrył jeżeli (aplikacja.exe) jest nieaktywna uruchomić ponownie, złapać focus na tej apce i wklepać te 3 linijki i tyle.

#8 Użytkownik jest niedostępny   Matt91111 

  • PipPipPipPip
  • Grupa: Forumowicze
  • Postów: 747
  • Dołączył: Nd, 22 Lip 12

Napisany 16 Wrzesień 2019 - 00:57

z crash logu wynika, że ma problem z jakimś działaniem asynchronicznym/operacją na kilku wątkach.

Tu masz na szybko, potrzebujesz zainstalować do tego autoit oraz wyciągnąć nazwę okna.

#NoTrayIcon
#include <Process.au3>
HotKeySet("{ESC}", "quit")

global const $iIsAliveTick = 5000 ;5sekund
global const $sAppPath = "sciezka/do/aplikacja.exe"
global const $sAppTitle = "nazwa okna";autoit window info -> [summary] -> window -> title

global $hWindow = null
global $iPID = null

Init()

while true
	CheckApp()
	sleep($iIsAliveTick)
wend

Func Init()
	if not FileExists($sAppPath) then
		MsgBox(0, "", "ni eznaleziono aplikacji")
		exit 0
	endif
EndFunc

Func StartApp()
	$iPID = Run($sAppPath, "", @SW_SHOW)
EndFunc

Func SetupApp()
	local $handle = WinGetHandle("[TITLE:"&$sAppTitle&"]")

	if @error then
		MsgBox(0, '', "nie udalo sie znalezc okna")
	endif

	WinActivate($handle);ustawia focus

	Send("Co kolwiek chcemy wyslac", 1)
	Sleep(1000)
	Send("{ENTER}")
	Sleep(1000)
	Send("Oraz wiecej tego co checmy wyslac", 1)
	Sleep(1000)
	;
	; {...}
	;
EndFunc

Func CheckApp()
	dim $name = _ProcessGetName($iPID)

	if @error then
		StartApp()
		Sleep(2000)
		SetupApp()
	endif
EndFunc

Func Quit()
	exit 0
EndFunc


#9 Użytkownik jest niedostępny   kiedy_oni_placza 

  • Dyskutant
  • PipPip
  • Grupa: Forumowicze
  • Postów: 87
  • Dołączył: Nd, 09 Sie 15

Napisany 16 Wrzesień 2019 - 10:14

Dzięki wielkie kolego, wrócę później to dam znać
#wszystko działa sprawnie, zedytowałem co trzeba było i wszystko gra automatycznie już ;)

Ten post był edytowany przez kiedy_oni_placza dnia: 16 Wrzesień 2019 - 13:25


Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

1 Użytkowników czyta ten temat
0 użytkowników, 1 gości, 0 anonimowych