# Créer un script qui ping en tâche de fond



## darkniko (19 Janvier 2015)

Bonjour à tous,
Ayant des soucis de déconnexion avec ma box, j'ai lancé sur deux fenêtres du Terminal la commande suivante afin de savoir quand surviennent les déconnexions :

```
Ping -i 600 192.168.1.254 | perl -nle 'print scalar(localtime), " ", $_'
```

J'aimerai que cela se fasse en tâche de fond.
Mon but, toutes les 10 minutes exécution de la commande ping, et enregistrement de la commande et de la réponse dans un fichier. (Ou juste de la réponse)

Est ce possible avec AppleScript? Avez vous des liens, des tutos, des idées?

Je ne cherche pas forcément un script tout fait, j'aime trouver les solutions par moi même 

Merci d'avance


----------



## les_innommables66 (19 Janvier 2015)

Bonjour,

Possible avec Applescript, en utilisant "do shell script" et "on idle" (par exemple).

Cordialement,
Nicolas


----------



## darkniko (19 Janvier 2015)

Merci, je vais regarder ça. 
Il faut donc que je crée un script Shell à exécuter?
Le "on idle" sert à exécuter en arrière plan?


----------



## nicolasf (20 Janvier 2015)

darkniko a dit:


> Il faut donc que je crée un script Shell à exécuter?



Pas besoin de créer un fichier supplémentaire, tu peux insérer ta ligne de Shell directement dans l'AppleScript. Exemple très simple pour stocker le code source de n'importe quelle URL dans une variable :


```
set codeSource to do shell script "curl --max-time 5 " & (quoted form of pageURL)
```


----------



## les_innommables66 (20 Janvier 2015)

Bonsoir,

Un AppleScript basique doit pouvoir ressembler à :

```
on idle
do shell script "insère ici ta commande du terminal"
return 600 -- 10 x 60 secondes c'est-à-dire attente de 10 minutes
end idle
```


----------



## darkniko (20 Janvier 2015)

Merci pour vos réponses, voici ce que j'ai pondu. Ne vous arrachez pas les cheveux si ça pique les yeux, je n'ai aucune connaissance dans ce langage :|


```
on idle
set resultat to (do shell script ("ping -i 192.168.1.254 | perl -nle 'print scalar(localtime), " ", $_'"))
open for access /Users/Nicolas/Documents/resultatbox.rtf with write permission
write resultat & return to /Users/Nicolas/Documents/resultatbox.rtf
close access /Users/Nicolas/Documents/resultatbox.rtf
return 600
end idle
```

Seulement quand j'essaie de l'exécuter l'éditeur de script me dit 





> , attendue mais " trouvée
> set resultat to (do shell script ("ping -i 192.168.1.254 | perl -nle 'print scalar(localtime), " ", $_'"))


Vous avez une idée?
Quelles sont les choses à changer?
Et je me pose une question, mon fichier va-t-il s'ouvrir et se fermer à chaque fois? Ou est ce qu'il est possible d'écrire dans le fichier sans l'ouvrir à l'écran.


----------



## les_innommables66 (22 Janvier 2015)

Bonjour,

Sans doute un problème de guillemets.
Remplace print scalar(localtime), " " par 
print scalar(localtime), \" \"

Aide possible ci-dessous :
http://trad.applescript.free.fr/guides/TechNote2065.pdf

Cordialement
Nicolas


----------



## rougevin (3 Février 2015)

Je ne pratique pas applescript, mais ca se fait très bien en shell :

```
#!/bin/sh
while true
do
ping -c 3 adresse.a.pinger >> ping.txt   # un seul > si on ne veux garder que la derniere rafale
sleep 600                                # en secondes
done
```

Ne pas oublier de faire un chmod a+x sur le fichier, bien sur

Et pour le lancer on tape  juste ./ping.sh & sur le terminal (ou nohup ./ping.sh & si on ne veut pas garder de fenêtre terminal)


----------

