Bonjours a tous et merci d'avance de votre aide
Voilà, pour faire simple j'ai une application d'un poste secondaire (téléphone en l'occurence) qui communique via un port spécifique a une application sur mon Poste principal.
Le problème, c'est que l'application sur mon poste principal ne peux pas être lancé h24, c'est pourquoi j'essaye de créer un script Powershell (ou autre si vous préférez) de port knocking qui va attendre un paquet sur le port en question, et quand ce sera fait, va lancer l'application approprié et lui laisser la communication.
J'ai déjà (avec de l'aide) commencé un script Powershell
Code :
- $Listener = [System.Net.Sockets.TcpListener]8080;
- while($true)
- {
- $Listener.Start();
- $client = $Listener.AcceptTcpClient();
- Write-Host "Connecté, lancement de l'appli";
- $client.Close();
- $Listener.Stop();
- Start-Process -FilePath "C:\Program Files (x86)\...\xxx.exe" -Wait
- Start-Sleep -s 10;
- }
|
Ce script marche très bien, le problème, c'est que si l'appli PC est lancé manuellement (ce qui peut arriver), le script essayera de lancer un autre exe qui échouera, mais surtout le -wait ne sera pas pris en compte et dans ce cas, l'écoute active du port empêche toute communication entre les 2 appli. J'ai donc essayé
Code :
- while($true)
- {
- while((Get-Process -Name xxx -ErrorAction SilentlyContinue) -ne $null)
- {
- Start-Sleep -s 10;
- }
- $Listener = [System.Net.Sockets.TcpListener]8080;
- $Listener.Start();
- $client = $Listener.AcceptTcpClient();
- Write-Host "Connecté, lancement de l'appli";
- $client.Close();
- $Listener.Stop();
- If ((Get-Process -Name xxx -ErrorAction SilentlyContinue) -eq $null)
- {
- Start-Process -FilePath "C:\Program Files (x86)\...\xxx.exe" -Wait
- Start-Sleep -s 10;
- } else {
- Write-Host "appli déjà lancé"
- }
- }
|
Mais visiblement, même quand le script est bloqué dans la 1ere boucle (car l'appli est déjà lancé), l'écoute reste active car la communication échoue en boucle...
le paramètre "-wait" a l'air de marcher pour mettre en pause l'écoute, mais je ne sais pas trop comment l'implémenter dans le cas ou l'appli est déjà lancé (sachant que je ne veux pas quitter l'appli si elle est déjà lancé)
Voilà, j'espère que vous pourrez m'aider parceque je ne suis pas très doué en scripting.
Merci d'avance de votre aide