> Tous les forums > Forum Linux
 Script bash pour lancer/arrêter un logicielSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Mimile
  Posté le 14/11/2007 @ 09:20 
Aller en bas de la page 
Astucien

Bonjour,

Excusez-moi par avance pour la longueur de ce message.

Sous WinXP, j'ai installé FileZilla-server afin de transformer le PC qui se trouve chez moi en serveur FTP accessible depuis le PC que j'utilise à mon bureau ; pour cela, comme j'ai une adresse IP dynamique, je me suis procuré un nom de domaine (gratuit) sur no-ip.com, ce qui est bien pratique et tout baigne sous WinXP.

Ce programme no-ip associe mon nom de domaine à mon adresse IP dynamique du moment.

Il existe une version linux du programme no-ip (elle s'appelle noip2) qui active mon nom de domaine en fournissant les codes d'accès sur no-ip.com ; ça marche, je l'ai vérifié avec un programme de test en ligne (http://www.g6ftpserver.com/fr/ftptest) qui confirme que la connexion est effectivement établie avec mon nom de domaine.

Pour lancer ce programe noip2, il faut taper en ligne de comme /usr/local/bin/noip2 et pour l'arrêter, il faut faire un kill de son PID ou un killall noip2.

N'étant pas un fana de la ligne de commande, je me suis créé deux icônes, l'une pour démarrer le programme, l'autre pour l'arrêter.

Dans un cas d'espèce différent mais similaire (il s'agissait de monter/démonter un DD externe), un astucien m'avait rédigé un petit script bash que j'avais intégré dans une icône unique par le biais d'un lien symbolique et qui, en fonction du statut décelé, montait le DD externe s'il ne l'était pas ou le démontait s'il l'était.

J'ai adapté ce script au cas de figure qui m'intéresse :

#!/bin/bash

if ps x | grep noip2 (si noip2 est trouvé dans la liste

then (alors

killall noip2 (on tue le processus

else (si noip2 n'est pas trouvé

/usr/local/bin/noip2 (on lance le processus

fi

exit

(Je précise que noip2 est un exécutable)

Il y a malheureusement un problème car, quand j'exécute ce script alors que noip2 ne tourne pas, ps x essaye malgré tout d'exécuter killall et, évidemment, signale qu'aucun processus n'a été tué alors qu'il devrait logiquement démarrer noip2 ; en revanche, si noip2 tourne, le script l'arrête sans problème.


En fait, il semblerait que, quand on exécute ps x | grep noip2, cette ligne s'ajoute à la liste, ce qui fausse tout car, à ce moment, le script constate la présence du mot "noip2" et considère qu'il doit exécuter killall, ce qui explique qu'il ne démarre pas noip2.

Illustration :

1er cas : noip2 fonctionne :

[okapi@compaq_linux ~]$ ps x | grep noip2

résultat :

okapi 27925 0.0 0.1 1948 772 ? Ss 11:29 0:00 /usr/local/bin/noip2
okapi 27935 0.0 0.1 3100 776 pts/1 S+ 11:29 0:00 grep --color noip2

On observe que "noip2" apparaît deux fois : une fois pour l'exécutable et une seconde fois pour l'analyse grep.

2ème : je tue noip2

[okapi@compaq_linux ~]$ killall noip2
[okapi@compaq_linux ~]$ ps x | grep noip2

résultat :


okapi 27982 0.0 0.1 3096 776 pts/1 S+ 11:29 0:00 grep --color noip2

On observe que l'exécutable a disparu mais qu'il subsiste noip2 dans la liste fournie par ps x : mon script constate alors que noip2 est présent et donc essaye de le fermer ...

C'est un cercle vicieux ...

A mon avis, il faudrait exécuter ps x > ps.txt ce qui aura pour effet de créer une fichier.txt contenant les logiciels en action sans pour autant y inclure la fameuse ligne relative à grep --color noip2, puis opérer une recherche dans ce fichier texte pour essayer d'y trouver ou non noip2 (qui sera à ce moment l'exécutable exclusivement).

Dès lors, selon qu'il s'y trouvera ou non, le reste du script fonctionnera correctement.

Le problème, c'est que je ne sais pas comment programmer la recherche d'un mot dans un fichier.txt

Quelqu'un pourrait-il m'aider à rédiger correctement la ligne initiale :

création du fichier texte : ps x > ps.txt (ça marche)

puis, et là, je patine, la ligne de commande permettant la recherche de "noip2" dans le fichier texte ps.txt

et éventuellement en prime, une instruction pour détruire le fichier ps.txt à la fin de l'exécution du script (mais ce n'est pas indispensable)

Merci d'avance.

Amicalement,



Modifié par Mimile le 14/11/2007 12:13
Publicité
Mimile
 Posté le 14/11/2007 à 13:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Re-

Au lieu de m'épuiser à rédiger mon message, j'aurais mieux fait d'arpenter le net.

J'ai trouvé ma solution.

Pour ceux que ça intéresserait, voici le script qui fonctionne ;

#!/bin/bash

ps x > ps.txt

if grep "noip2" ps.txt

then

killall noip2

else

/usr/local/bin/noip2

fi

exit

Pas plus compliqué que ça ...

Un clic sur l'icône, noip2 démarre - un autre clic, noip2 s'arrête.

Amicalement,

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
NAS Synology DS423+ (4 baies) à 461,92 € livré
461,92 € 549 € -16%

Amazon Italie fait une promotion sur le NAS Synology DS423+ qui passe à 452,45 € (avec la TVA ajustée). Comptez 9,47 € pour la livraison en France soit un total de 461,92 € livré. On le trouve ailleurs à partir de 549 €. Le Synolgy DS423+ à 4 baies est un NAS performant doté de tous les outils dont vous avez besoin pour sécuriser, partager, sauvegarder et synchroniser vos données et vos fichiers multimédias.


Voir le bon plan
Support ErGear articulé pour deux écrans PC 13 à 32 pouces à 24,99 €
24,99 € 49,99 € -50% @Amazon

Amazon fait une promotion sur le support ErGear articulé pour deux écrans PC de 13 à 32 pouces à 24,99 € grâce à un coupon de réduction à activer sur la page du produit. On le trouve ailleurs à partir de 49,99 €. Le bras de moniteur ErGear intégré à un ressort à gaz durable offre un amortissement ou une résistance permettant de déplacer vos moniteurs plus facilement et en douceur notamment avec 43 cm de réglage de la hauteur, un minimum de 45 min à 87 cm d'extension max, et peut s'incliner vers le haut et vers le bas ± 45 ° inclinaison, pivotement gauche et droite ± 35 °, paysage et portrait à 360°. 

2 choix de montage distincts: installation par pince robuste à bord en "C" et par base à œillet. Poids max de 12 kg. Compatible VESA : 75 * 75 mm, 100 * 100 mm.


Voir le bon plan
Dissipateur thermique Thermalright pour SSD M2 2280 à 5,59 €
5,59 € 10 € -44% @Amazon

Amazon fait une promotion sur le dissipateur thermique Thermalright pour SSD M2 2280 qui passe à 5,59 € au lieu de 10 €. Permet de réduire la température de votre SSD de 10 à 30° et éviter qu'il se bride avec une température trop élevée.


Voir le bon plan
SSD externe portable USB 3.1 SanDisk Extreme NVMe 2 To (1050 Mo/s) à 135,99 €
135,99 € 180 € -24% @Amazon

Amazon fait une promotion sur le SSD externe portable USB 3.1 SanDisk Extreme NVMe 2 To qui passe à 135,99 € alors qu'on trouve le SSD à plus de 180 € ailleurs. 

Le disque SSD SanDisk Extreme NVMe Portable 2 To permet, grâce à sa connectique USB 3.1, des haute vitesse de transfert pouvant aller jusqu'à 1050 Mo/s grâce au disque NVMe qu'il contient. Sa coque robuste et certifiée IP55 (eau et poussière) protège vos données partout où vous allez. Vous ne craindrez pas de l'emporter partout avec vous grâce à sa conception robuste et résistante avec un coeur de SSD résistant aux chocs. Le logiciel SanDisk inclu SecureAccess peut crypter vos fichiers personnels. Garantie 5 ans. Interface : USB 3.1 Type A et C.


Voir le bon plan
Smartphone Google Pixel 6A 5G (6.1' FHD+, 8 coeurs, 6 Go RAM, 128 Go) à 264 €
264 € 309 € -15% @AliExpress

AliExpress fait une promotion sur l'excellent smartphone Google Pixel 6A 5G qui passe à 264 €. On le trouve ailleurs à oartir de 309 €. Ce smartphone possède un écran OLED FHD+ de 6.1 pouces, un processeur Google Tensor, 6 Go de RAM et un espace de stockage de 128 Go. Les gros points forts de ce smartphone sont la qualité exceptionnelles des photos et qu'il bénéficie des mises à jour de sécurité et d'Android pendant au moins 3 ans.


Voir le bon plan
Bureau Assis Debout électrique SANODESK QS1 + plateau 140x60 cm à 139,99 €
139,99 € 179 € -22% @Amazon

Amazon fait une promotion sur le bureau Assis Debout électrique SANODESK QS1 + plateau 140x60 cm qui passe à 139,99 € livré gratuitement. Hauteur réglable de 71 à 117 cm, 2 réglages possibles en mémoire. Plusieurs coloris disponibles.


Voir le bon plan

Sujets relatifs
icone pour lancer un script en root
[TUTO]Script, pour Notification de Réponse.
Logiciel pour extraire le son dans un film!!!
Lancer un script via raccourci bureau
logiciel pour faire image disque
Fonction Bash pour remplacer modprobe -l
Logiciel pour trouver les Fichiers en double
Besoin d'aide pour installer un logiciel sh
commande introuvable et script bash
script bash - instruction "echo" sans effet
Plus de sujets relatifs à Script bash pour lancer/arrêter un logiciel
 > Tous les forums > Forum Linux