Script (PowerShell ?) et port knocking

Script (PowerShell ?) et port knocking - Management du SI - Systèmes & Réseaux Pro

Marsh Posté le 23-06-2017 à 12:36:57    


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 :
  1. $Listener = [System.Net.Sockets.TcpListener]8080;
  2. while($true)
  3. {
  4.     $Listener.Start();
  5.     $client = $Listener.AcceptTcpClient();
  6.     Write-Host "Connecté, lancement de l'appli";
  7.     $client.Close();
  8.     $Listener.Stop();
  9.     Start-Process -FilePath "C:\Program Files (x86)\...\xxx.exe" -Wait
  10.     Start-Sleep -s 10;
  11. }

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 :
  1. while($true)
  2. {
  3.     while((Get-Process -Name xxx -ErrorAction SilentlyContinue) -ne $null)
  4.     {
  5.         Start-Sleep -s 10;
  6.     }
  7.     $Listener = [System.Net.Sockets.TcpListener]8080;
  8.     $Listener.Start();
  9.     $client = $Listener.AcceptTcpClient();
  10.     Write-Host "Connecté, lancement de l'appli";
  11.     $client.Close();
  12.     $Listener.Stop();
  13.     If ((Get-Process -Name xxx -ErrorAction SilentlyContinue) -eq $null)
  14.     {
  15.         Start-Process -FilePath "C:\Program Files (x86)\...\xxx.exe" -Wait
  16.         Start-Sleep -s 10;
  17.     } else {
  18.         Write-Host "appli déjà lancé"
  19.     }
  20. }


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

Reply

Marsh Posté le 23-06-2017 à 12:36:57   

Reply

Marsh Posté le 23-06-2017 à 13:19:47    

Rien de pro, voir le topic en cat grand public

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed