réagir a une connexion

réagir a une connexion - Réseaux - Réseaux grand public / SoHo

Marsh Posté le 17-06-2017 à 21:46:48    

Bonjour a tous et merci d'avance de votre aide.
 
Voilà, j'ai une question simple mais assez complexe en même temps :
 
Est-il possible pour un OS d'interpréter un paquet
- Wake on Lan dans l'idéal
- un paquet a destination d'un port spécifique sinon
et de faire une action (lancer un logiciel) lorsqu'un paquet est capté ?
 
Peut-être avec un script en boucle, ou un logiciel spécialement prévu pour ?


Message édité par diablol le 17-06-2017 à 23:45:07
Reply

Marsh Posté le 17-06-2017 à 21:46:48   

Reply

Marsh Posté le 18-06-2017 à 11:40:12    

oui biensur, soit un programme standard qui écoute sur un port et va lancer ton action lorsque la connexion se fait ou le mécanisme de port knocking (tu frappes à la porte de qqn et derrière il fait une action même si port fermé)

Reply

Marsh Posté le 18-06-2017 à 11:45:15    

Je@nb a écrit :

oui biensur, soit un programme standard qui écoute sur un port et va lancer ton action lorsque la connexion se fait ou le mécanisme de port knocking (tu frappes à la porte de qqn et derrière il fait une action même si port fermé)


Ah cool, tu aurais le nom d'un logiciel qui fait ça et qui est relativement facile a utiliser ? (je ne suis pas très doué en scripting)

Reply

Marsh Posté le 18-06-2017 à 11:46:51    

non j'en connais pas pour la première méthode, mais ça doit pas être très compliqué à coder.
Le port knocking (voir google) j'ai déjà fait sur du linux par contre

Reply

Marsh Posté le 18-06-2017 à 11:49:28    

Je@nb a écrit :

non j'en connais pas pour la première méthode, mais ça doit pas être très compliqué à coder.
Le port knocking (voir google) j'ai déjà fait sur du linux par contre


Ok ça marche, je vais me renseigner... merci de ton aide !
Si/quand je trouverai une solution, je la posterai ici au cas ou ça intéresse quelqu'un d'autre
 
PS : si quelqu'un a des propositions de logiciel ou script, je suis toujours preneur

Reply

Marsh Posté le 18-06-2017 à 12:16:43    

tu veux lancer quoi comme logiciel ?

Reply

Marsh Posté le 18-06-2017 à 12:18:48    

Je@nb a écrit :

tu veux lancer quoi comme logiciel ?

Kodi, c'est un logiciel de médiacenter.
Il existe une solution normalement, mais elle ne marche qu'avec un téléphone android et je n'ai pas d'android :s

Reply

Marsh Posté le 18-06-2017 à 12:23:18    

A l'arrache un truc comme ça en powershell doit faire le job:

Code :
  1. $Listener = [System.Net.Sockets.TcpListener]12345; #Ton port
  2. $Listener.Start();
  3. while($true)
  4. {
  5.     $client = $Listener.AcceptTcpClient();
  6.     Write-Host "Connecté, lancement de Kodi";
  7.     Start-Process -FilePath "C:\....\Kodi.exe"
  8.     $client.Close();
  9. }
  10. $Listener.Stop();


Remplace 12345 par le port TCP que tu veux utiliser et le chemin de kodi par le vrai chemin.
Par contre là à chaque connexion il va t'ouvrir kodi je sais pas si c'est ce que tu veux

Message cité 1 fois
Message édité par Je@nb le 18-06-2017 à 15:08:21
Reply

Marsh Posté le 18-06-2017 à 13:31:46    

Je@nb a écrit :

A l'arrache un truc comme ça en powershell doit faire le job:

Code :
  1. $Listener = [System.Net.Sockets.TcpListener]12345; #Ton port
  2. $Listener.Start();
  3. while($true)
  4. {
  5.     $client = $Listener.AcceptTcpClient();
  6.     Write-Host "Connecté, lancement de Kodi";
  7.     Start-Process -FilePath "C:\....\Kodi.exe"
  8.     $client.Close();
  9. }
  10. $Listener.Stop();


Remplace 12345 par le port TCP que tu veux utiliser et le chemin de kodi par le vrai chemin.
Par contre là à chaque connexion il va t'ouvrir kodi je sais pas si c'est ce que tu veux


Cool, Kodi s'ouvre bien quand j'initialise ma connection, par contre je n'arrive pas a m'y connecter, ça me met "connexion perdu" en boucle.
Je ne comprends pas tout ton script (qui a pourtant l'air simple), mais je pense qu'il faudrait stopper l'écoute de port si il détecte le processus kodi pour ne pas lancer l'exe en boucle ou s'accaparer les paquets (je ne sais pas si c'est possible mais bon) non ?

Reply

Marsh Posté le 18-06-2017 à 14:07:17    

normal, une fois qu'il a lancé kodi il ferme la connexion avec le client mais reste dispo si tu as besoin de le lancer une prochaine fois (au cas où tu fermes kodi par exemple ?)
Si tu veux que le script se termine une fois que kodi est ouvert suffit de virer ligne 3/4 et 9

Reply

Marsh Posté le 18-06-2017 à 14:07:17   

Reply

Marsh Posté le 18-06-2017 à 14:46:31    

Je@nb a écrit :

normal, une fois qu'il a lancé kodi il ferme la connexion avec le client mais reste dispo si tu as besoin de le lancer une prochaine fois (au cas où tu fermes kodi par exemple ?)
Si tu veux que le script se termine une fois que kodi est ouvert suffit de virer ligne 3/4 et 9


Oui mais je ne veux pas qu'il ferme la connexion avec le client a chaque fois, sinon l'appli télécommande ne marche plus (si la boucle reste active, a chaque fois que ma télécommande essaye de se connecter, il relance l'exe et referme la connexion, du coup la télécommande réessaye et ça en boucle).
Je me suis surement mal exprimé, je veux que mon appli télécommande serve a démarrer Kodi, mais aussi a télécommander Kodi quand il est lancé ^^
Et comme tu l'as dit, si je vire les lignes 3/4/9 ça marche mais le script se ferme donc utilisable qu'une fois...
Du coup il faudrait juste rajouter un truc du genre "if process kodi.exe then retry else listen..." (c'est pas du power shell hein, c'est pour l'exemple xD ) comme-ça il arrête d'écouter le port si Kodi est déjà lancé et laisse la télécommande agir jusqu'a ce que je ferme Kodi.


Message édité par diablol le 18-06-2017 à 14:52:53
Reply

Marsh Posté le 18-06-2017 à 15:08:34    

Code :
  1. $Listener = [System.Net.Sockets.TcpListener]12345; #Ton port
  2. $Listener.Start();
  3. while($true)
  4. {
  5.     $client = $Listener.AcceptTcpClient();
  6.     Write-Host "Connecté, lancement de Kodi";
  7.     If ((Get-Process -Name kodi -ErrorAction SilentlyContinue) -eq $null)
  8.     {
  9.         Start-Process -FilePath "C:\....\Kodi.exe"
  10.     } else {
  11.         Write-Host "Koki déjà lancé"
  12.     $client.Close();
  13. }
  14. $Listener.Stop();


Un truc comme ça alors ? (pas trop compris ce que tu disais :D), (je connais pas le nom de l'exécutable de kodi mais ligne 7 faut juste mettre le nom du programme sans .exe

Reply

Marsh Posté le 18-06-2017 à 16:26:32    

Je@nb a écrit :

Code :
  1. $Listener = [System.Net.Sockets.TcpListener]12345; #Ton port
  2. $Listener.Start();
  3. while($true)
  4. {
  5.     $client = $Listener.AcceptTcpClient();
  6.     Write-Host "Connecté, lancement de Kodi";
  7.     If ((Get-Process -Name kodi -ErrorAction SilentlyContinue) -eq $null)
  8.     {
  9.         Start-Process -FilePath "C:\....\Kodi.exe"
  10.     } else {
  11.         Write-Host "Koki déjà lancé"
  12.     $client.Close();
  13. }
  14. $Listener.Stop();


Un truc comme ça alors ? (pas trop compris ce que tu disais :D), (je connais pas le nom de l'exécutable de kodi mais ligne 7 faut juste mettre le nom du programme sans .exe


Oui un truc comme-ça, (il manquait une "}" mais je l'ai rajouté) mais ma télécommande n'arrive toujours pas a se connecter, il n'y avait que quand le PS s'arrêtait (en virant le while que ça marchait, je pense qu'il faut faire un mix , par exemple dans le else il faudrait arrête tout listen comme comme quand le PS se ferme et attendre que le processus disparaisse pour tout relancer... oui je sais je suis chiant hein ^^
J'ai essayé un truc en utilisant les commandes que tu m'as déjà donné mais ça a foiré... Je ne gère vraiment pas en PS ^^
 
PS : le port c'est "8080", le chemin c'est "C:\Program Files (x86)\Kodi\kodi.exe" et ce processus c'est bien "kodi", (tout ça c'est sure ça a marché avec)

Message cité 1 fois
Message édité par diablol le 18-06-2017 à 16:26:56
Reply

Marsh Posté le 18-06-2017 à 16:40:45    

diablol a écrit :


Oui un truc comme-ça, (il manquait une "}" mais je l'ai rajouté) mais ma télécommande n'arrive toujours pas a se connecter, il n'y avait que quand le PS s'arrêtait (en virant le while que ça marchait, je pense qu'il faut faire un mix , par exemple dans le else il faudrait arrête tout listen comme comme quand le PS se ferme et attendre que le processus disparaisse pour tout relancer... oui je sais je suis chiant hein ^^
J'ai essayé un truc en utilisant les commandes que tu m'as déjà donné mais ça a foiré... Je ne gère vraiment pas en PS ^^
 
PS : le port c'est "8080", le chemin c'est "C:\Program Files (x86)\Kodi\kodi.exe" et ce processus c'est bien "kodi", (tout ça c'est sure ça a marché avec)


Ok c'est bon j'ai reussi !
 

Code :
  1. while($true)
  2. {
  3.     $Listener = [System.Net.Sockets.TcpListener]8080;
  4.     $Listener.Start();
  5.     $client = $Listener.AcceptTcpClient();
  6.     Write-Host "Connecté, lancement de Kodi";
  7.     Start-Process -FilePath "C:\Program Files (x86)\Kodi\kodi.exe"
  8.     $client.Close();
  9.     $Listener.Stop();
  10.     while((Get-Process -Name kodi -ErrorAction SilentlyContinue) -ne $null)
  11.     {}
  12.     Write-Host "Kodi s'est arrêté";
  13.     Start-Sleep -s 10;
  14. }


 
Question bête et après je te laisse tranquille, il vaut mieux que je le mette dans la GPO local plutôt que dans le dossier démarrage de windows pour qu'ils soir silencieux non ?
enfin si ça existe, j'ai jamais trop fouillé dans les GPO locales :p


Message édité par diablol le 18-06-2017 à 16:46:09
Reply

Marsh Posté le 18-06-2017 à 16:47:58    

J'avoue j'ai un peu de mal à comprendre comment marche ta télécommande :D.
Là ton script j'ai peur qu'il bouffe du cpu constamment.
 
Tache planifiée je pense c'est le mieux

Reply

Marsh Posté le 18-06-2017 à 16:57:53    

Je@nb a écrit :

J'avoue j'ai un peu de mal à comprendre comment marche ta télécommande :D.
Là ton script j'ai peur qu'il bouffe du cpu constamment.
 
Tache planifiée je pense c'est le mieux


 
Bah en fait c'est une appli téléphone qui communique avec mon logiciel Kodi par le port 8080 pour lui envoyer des ordre comme une télécommande classique, mais comme ça me fait chier de prendre ma souris pour lancer Kodi a chaque fois, je cherchais une solution pour qu'il le lance des que je démarre l'appli de télécommande sur mon téléphone. tu vois ce que je veux dire ?
 
Ah oui, si ça bouffe beaucoup de CPU c'est chiant... qu'est-ce qui te fait dire ça ? peut-être qu'un timer d'une seconde dans la boucle global peut arranger ça ?
Parceque de ce que j'ai compris le fait d'écouter le port en boucle perturbait la télécommande, qui perdait la connexion en boucle...
ou si tu as une idée de modification je suis preneur !
 
Une tache planifié au démarrage ? c'est quoi la différence ?


Message édité par diablol le 18-06-2017 à 16:59:41
Reply

Marsh Posté le 18-06-2017 à 17:09:08    

kodi écoute sur le port 8080 une fois qu'il démarre c'est ça ?
Donc en fait tu as besoin que l'appli sur téléphone se connecte sur le port 8080 là c'est le script qui répond puis lance kodi et là kodi écoute sur le port 8080 et ta télécommande peut fonctionner ?
Puis qd tu fermes kodi et télécommande que le script reprenne la main et réécoute ?
 
tache planifiée au démarrage oui pk pas. Parce que c'est comme ça que fonctionne tous les lancements logiciels sur windows vista et plus

Reply

Marsh Posté le 18-06-2017 à 17:16:24    

Je@nb a écrit :

kodi écoute sur le port 8080 une fois qu'il démarre c'est ça ?
Donc en fait tu as besoin que l'appli sur téléphone se connecte sur le port 8080 là c'est le script qui répond puis lance kodi et là kodi écoute sur le port 8080 et ta télécommande peut fonctionner ?
Puis qd tu fermes kodi et télécommande que le script reprenne la main et réécoute ?


Voilà c'est exactement ça !
 

Je@nb a écrit :

tache planifiée au démarrage oui pk pas. Parce que c'est comme ça que fonctionne tous les lancements logiciels sur windows vista et plus


Mais ça a un intérêt par rapport au dossier démarrage ? c'est que ça le lance en silencieux je suppose ?

Reply

Marsh Posté le 18-06-2017 à 17:25:42    

Essaie ça alors :

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 Kodi";
  7.     $client.Close();
  8.     $Listener.Stop();
  9.     If ((Get-Process -Name kodi -ErrorAction SilentlyContinue) -eq $null)
  10.     {
  11.         Start-Process -FilePath "C:\Program Files (x86)\Kodi\kodi.exe" -Wait
  12.     } else {
  13.         Write-Host "Koki déjà lancé"
  14.     }
  15. }
 

Le principal c'est le -Wait qui dit au script d'attendre et la fermeture de la connexion par le script avant de lancer kodi comme ça il donne la main à kodi une fois lancé

Message cité 1 fois
Message édité par Je@nb le 18-06-2017 à 17:26:29
Reply

Marsh Posté le 18-06-2017 à 17:43:13    

Je@nb a écrit :

Essaie ça alors :

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 Kodi";
  7.     $client.Close();
  8.     $Listener.Stop();
  9.     If ((Get-Process -Name kodi -ErrorAction SilentlyContinue) -eq $null)
  10.     {
  11.         Start-Process -FilePath "C:\Program Files (x86)\Kodi\kodi.exe" -Wait
  12.     } else {
  13.         Write-Host "Koki déjà lancé"
  14.     }
  15. }


 
Le principal c'est le -Wait qui dit au script d'attendre et la fermeture de la connexion par le script avant de lancer kodi comme ça il donne la main à kodi une fois lancé


 
Ah bin voilà, tout simplement ^^
je peux rajouter un "Start-Sleep -s 10;" après le Start process pour être sure qu'il ne me relance pas kodi si je ferme l'appli téléphone quelques secondes après avoir fermé kodi, ça ne pause pas de problème si ?
 
Une autre question, J'ai mis l'Execution Policy en RemoteSigned mais il ne veux pas me lancer le script, il me le lance en txt cet enfoiré, je suis censé passé par un script en dos pour lancer mon PS ?


Message édité par diablol le 18-06-2017 à 17:44:13
Reply

Marsh Posté le 18-06-2017 à 17:46:16    

tu peux rajouter le sleep oui.
Pour le lancer: powershell.exe -ExecutionPolicy Bypass -NoProfile -File c:\trucmuche\script.ps1
dans la tache planifiée tu fais en action exécuter un programme qui s'appelle powershell.exe et dans les arguments tu met tout le reste

Reply

Marsh Posté le 18-06-2017 à 17:57:28    

Je@nb a écrit :

tu peux rajouter le sleep oui.
Pour le lancer: powershell.exe -ExecutionPolicy Bypass -NoProfile -File c:\trucmuche\script.ps1
dans la tache planifiée tu fais en action exécuter un programme qui s'appelle powershell.exe et dans les arguments tu met tout le reste


Ok ça a l'air de marcher, par contre j'ai beau cocher la case "masquer" et "configurer pour Windows 10" dans le planificateur de tache, il est visible...

Reply

Marsh Posté le 18-06-2017 à 18:03:29    

tu as bien mis que l'utilisateur soit logué ou pas ? (ça fait lgt que j'en ai pas fait)

Reply

Marsh Posté le 18-06-2017 à 18:28:44    

Je@nb a écrit :

tu as bien mis que l'utilisateur soit logué ou pas ? (ça fait lgt que j'en ai pas fait)


Ah oui c'est bon, il n'apparait plus mais il ne marche plus... on ne peut pas tout avoir ^^
je suis entrain de chercher d'où ça peut venir, mais si tu as une idée...


Message édité par diablol le 18-06-2017 à 18:29:17
Reply

Marsh Posté le 18-06-2017 à 19:04:14    

Bon bah ça m'a saoulé, je suis passé par le dossier démarrage, ou j'y ai mis un cmd avec en contenu "powershell.exe -windowstyle hidden -file C:\...\démarerKodi.ps1" et ça ira... merci beaucoup pour ton aide e tout cas !
 
version finale :
 

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 Kodi";
  7.     $client.Close();
  8.     $Listener.Stop();
  9.     If ((Get-Process -Name kodi -ErrorAction SilentlyContinue) -eq $null)
  10.     {
  11.         Start-Process -FilePath "C:\Program Files (x86)\Kodi\kodi.exe" -Wait
  12.         Start-Sleep -s 10;
  13.     } else {
  14.         Write-Host "Kodi déjà lancé"
  15.     }
  16. }


Message édité par diablol le 18-06-2017 à 19:06:45
Reply

Marsh Posté le 18-06-2017 à 19:17:45    

Ah non il y a un soucis avec le script powershell, si Kodi est déjà lancé (via windows), il réessaye en boucle et empêche la connexion a l'app... il faut y ajouter une boucle d'attente que le process disparaisse si il est déjà lancé
 

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 Kodi";
  7.     $client.Close();
  8.     $Listener.Stop();
  9.     If ((Get-Process -Name kodi -ErrorAction SilentlyContinue) -eq $null)
  10.     {
  11.         Start-Process -FilePath "C:\Program Files (x86)\Kodi\kodi.exe" -Wait
  12.         Start-Sleep -s 10;
  13.     } else {
  14.         Write-Host "Kodi déjà lancé"
  15.         while((Get-Process -Name kodi -ErrorAction SilentlyContinue) -ne $null)
  16.         {
  17.             Start-Sleep -s 1;
  18.         }
  19.         Start-Sleep -s 10;
  20.     }
  21. }


 
j'ai essayé ça, j'ai mis une pause de 1s dans la boucle pour ne pas surcharger le proc, mais la connexion ne se fait toujours pas dans le 2eme cas... tu as une idée ?


Message édité par diablol le 18-06-2017 à 19:28:26
Reply

Marsh Posté le 18-06-2017 à 19:31:26    

ah ouais faut que ce soit vraiment le script qui gère kodi, pas qu'il soit déjà lancé. De toute façon il pourra pas écouter sur le port car déjà utilisé par kodi
Tu peux faire ça ouais au cas où

Reply

Marsh Posté le 18-06-2017 à 19:33:24    

Je@nb a écrit :

ah ouais faut que ce soit vraiment le script qui gère kodi, pas qu'il soit déjà lancé. De toute façon il pourra pas écouter sur le port car déjà utilisé par kodi
Tu peux faire ça ouais au cas où


J'ai pas compris...
J'ai édité mon dernier message, j'en e sais pas si tu as vu, ça ne marche pas... :(

Reply

Marsh Posté le 19-06-2017 à 12:22:58    

Ah je viens de comprendre, mais Kodi ne fait qu'écouter sur le port, tout comme le script, il n'y a que l'appli télécommande qui envoie des données sur le port 8080, tu crois que ça gène quand-même ?
Après quelques tests (et avec des Write-Host pour savoir ce qu'il fait), j'ai l'impressions qu'une version ultra simpliste du genre

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 Kodi";
  7.     $client.Close();
  8.     $Listener.Stop();
  9.     Start-Process -FilePath "C:\Program Files (x86)\Kodi\kodi.exe" -Wait
  10.     Start-Sleep -s 10;
  11. }


pourrait marcher, mais visiblement, si l'exe est déjà lancé, il n'applique pas le -wait a l'exe déjà en cours et il continue a boucler donc ça empêche la communication...
 
Pour la version que j'ai essayé de modifier

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 Kodi";
  7.     $client.Close();
  8.     $Listener.Stop();
  9.     If ((Get-Process -Name kodi -ErrorAction SilentlyContinue) -eq $null)
  10.     {
  11.         Start-Process -FilePath "C:\Program Files (x86)\Kodi\kodi.exe" -Wait
  12.         Start-Sleep -s 10;
  13.     } else {
  14.         Write-Host "Kodi déjà lancé"
  15.         while((Get-Process -Name kodi -ErrorAction SilentlyContinue) -ne $null)
  16.         {
  17.             Start-Sleep -s 1;
  18.         }
  19.         Start-Sleep -s 10;
  20.     }
  21. }


la boucle "Start-Sleep -s 1;" marche mais j'ai l'impression qu'il continue a écouter, et du coup ça interfère aussi avec la télécommande...
 
le -wait ça marche nickel, mais je ne vois pas comment l'implanter dans la 2de partie... une idée ?


Message édité par diablol le 19-06-2017 à 17:23:00
Reply

Marsh Posté le 19-06-2017 à 19:03:03    

Essaie :

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

Reply

Marsh Posté le 19-06-2017 à 21:39:48    

Je@nb a écrit :

Essaie :

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



 
non ça ne marche pas, et je ne comprends pas trop ce que tu as voulu faire, la première boucle ne se lance qu'une fois (au démarrage) et ensuite le PS reste bloqué dans la deuxième quoi qu'il arrive donc je ne vois pas ce que ça change
 
EDIT : Je pense que tu voulais faire un truc du genre :

Code :
  1. while($true)
  2. {
  3.     while((Get-Process -Name kodi -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 Kodi";
  11.     $client.Close();
  12.     $Listener.Stop();
  13.     If ((Get-Process -Name kodi -ErrorAction SilentlyContinue) -eq $null)
  14.     {
  15.         Start-Process -FilePath "C:\Program Files (x86)\Kodi\kodi.exe" -Wait
  16.         Start-Sleep -s 10;
  17.     } else {
  18.         Write-Host "Kodi déjà lancé"
  19.     }
  20. }


mais ça ne marche pas non plus bizarrement, quand kodi est lancé manuellement et que je lance mon appli, il reste bien bloqué dans la 1ere boucle mais continue de bloquer le port


Message édité par diablol le 21-06-2017 à 13:19:10
Reply

Marsh Posté le 21-06-2017 à 13:26:28    

j'ai essayé 2 ou 3 trucs mais je n'y arrives pas... j'ai l'impression qu'il n'y a que le -wait qui arrête l'écoute du port, mais je ne sais pas comment l'implémenter dans le cas ou kodi est déjà lancé...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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