# terminal et fichier de commande



## tantoillane (2 Juin 2008)

Bonjour à tous,

Ce que je cherche est en fait tout simple. Je voudrais écrire dans un fichier texte (ou autre) un suite de commande à exécuter par le terminal pour pouvoir ensuite lancer ce fichier avec le terminal et que ce dernier m'exécute les commandes à l'intérieur.

Pour être explicite le fichier devrait simplement contenir ceci


```
open http://www[...]MjEyMQ%3D%3D&hl=0
open http://ww[...]2FQW49NDMyMTIx&b=61
open ....
etc.
```
Quand je tape le lignes une par une dans le terminal ça marche, mais ce n'est pas ce que l'on attend d'un ordinateur, surtout pour une opération aussi répétitive.


:rateau: 

Merci @+

edit : j'ai oublié de dire ce qui n'allait pas :
J'ai essayé de avec l'extension .cmd qui me donne une icône du type de celle que l'on trouve dans les paquets d'applications, et j'ai essayé avec l'extension .term qui me donne une image de fenêtre du terminal.
Dans les deux cas, quand je glisse ce fichier vers le terminal (pour avoir son chemin d'affiché) et que je fais "enter" j'ai le message "permission denied"


----------



## ntx (2 Juin 2008)

Il faut écrire un script shell (.sh), ne pas oublier de lui mettre les droits d'exécution (chmod +x), et si tu veux qu'il soit "double-cliquable", tu le renommes .command.


----------



## tantoillane (2 Juin 2008)

C'était si simple ! Un grand merci, (et un petit coup de boule)

@+


----------



## tantoillane (21 Août 2008)

J'ai cette fois ci écrit un fichier tout simple pour tester les IP sur une plage donnée, afin de savoir quels sont les IP des PC allumés. Ce qui donne

```
ping -t 4 192.168.1.180
ping -t 4 192.168.1.181
ping -t 4 192.168.1.182
ping -t 4 192.168.1.183
ping -t 4 192.168.1.184
ping -t 4 192.168.1.185
ping -t 4 192.168.1.186
ping -t 4 192.168.1.187
ping -t 4 192.168.1.188
ping -t 4 192.168.1.189
ping -t 4 192.168.1.190
ping -t 4 192.168.1.191
ping -t 4 192.168.1.192
ping -t 4 192.168.1.193
ping -t 4 192.168.1.194
ping -t 4 192.168.1.195
ping -t 4 192.168.1.196
ping -t 4 192.168.1.197
ping -t 4 192.168.1.198
ping -t 4 192.168.1.199
ping -t 4 192.168.1.200
ping -t 4 192.168.1.201
ping -t 4 192.168.1.202
ping -t 4 192.168.1.203
ping -t 4 192.168.1.204
```
Il n'y a plus qu'à voir s'il est écrit 0% ou 100% de loss, et de lire l'IP en face, sauf que quand je fais un copier-coller dans le terminal de ce qui est écrit au dessus ça marche, mais quand je fais un double-clique sur le fichier en .command (car maintenant je sais comment faire ça ) ça me donne les informations sur l'utilisation du ping comme si c'était mal tapé


```
Welcome to Darwin!
imac:~ antoine$ /Users/antoine/Desktop/ping.command; exit
usage: ping [-AaDdfnoQqRrv] [-c count] [-i wait] [-l preload] [-M mask | time]
            [-m ttl] [-p pattern] [-S src_addr] [-s packetsize]
            [-t timeout] [-z tos] host
       ping [-AaDdfLnoQqRrv] [-c count] [-I iface] [-i wait] [-l preload]
            [-M mask | time] [-m ttl] [-p pattern] [-S src_addr]
            [-s packetsize] [-T ttl] [-t timeout] [-z tos] mcast-group
logout
[Opération terminée]
```
Je sèche un peu sur ce coup là, peut-être est-ce aussi simple que le coup du .sh et chmod +x , mais je ne connais pas 

Merci à tous


----------



## tatouille (21 Août 2008)

```
#!/bin/sh

for((i=180; i<205; i++)) ; do
    echo "---------------------------------------------"
    ping -t 4 192.168.1.$i
    echo "---------------------------------------------"
    echo ""
done

# EOF
```


```
>$ sh myping.sh
```
ou



```
>$ chmod 755 myping.sh
>$ ./myping.sh
```

http://en.wikibooks.org/wiki/Bourne_Shell_Scripting


----------



## grumff (21 Août 2008)

T'es sûr que ton fichier est enregistré avec le même encodage de texte que ton terminal ? Et que tes retours à la ligne sont au format unix ? Et que t'as pas mis un caractère invisible type espace insécable ?
Et pour info, tu peux pinger l'adresse de broadcast si c'est juste pour obtenir les ip des machines connectées sur le réseau local. Ça t'évitera de faire 500 pings pour rien.


----------



## tatouille (21 Août 2008)

grumff a dit:


> T'es sûr que ton fichier est enregistré avec le même encodage de texte que ton terminal ? Et que tes retours à la ligne sont au format unix ? Et que t'as pas mis un caractère invisible type espace insécable ?
> Et pour info, tu peux pinger l'adresse de broadcast si c'est juste pour obtenir les ip des machines connectées sur le réseau local. Ça t'évitera de faire 500 pings pour rien.



 actuellement 25 *4 soit 1 m 40 s et arp -a
c'est un bon depard


----------



## tantoillane (21 Août 2008)

bon, dans l'ordre :

1) J'avais écrit ce fichier avec excel qui comprend très bien que quand je tape 192.168.1.180 dans la première case, il faut écrire 192.168.1.181 dans la seconde (et oui Gates n'est pas complètement idiot ). Apparemment, il semblerait que comme vous le dites il y avait de drôles d'espaces qui étaient mal interprétés car après avoir taper les 25 lignes à la main, c'est beaucoup mieux puisque le fichier se lance et c'est parti pour 1m40s 

2) J'ai essayer le truc de l'ami tatouille (faut bien quand même, c'est mon prof), mais je ne sais pas trop si c'est en C ou en langage unix. J'ai quand même copier le premier code dans smultron, enregistré en myping.sh ; tapé sh myping.sh dans le terminal, et ça ne fais rien. c'est comme si c'était déjà fini.


3) La bonne nouvelle quand même, c'est que l'année prochaine j'entre en école d'ingénieur électronique/informatique ... :rateau:


----------



## tatouille (21 Août 2008)

@tantoillane

 je ne sais pas ce que tu fais mais c'est un script bourne la meme chose que ce que tu as ecri 25 fois

telecharge ca http://www.barebones.com/products/textwrangler/



```
#!/bin/sh

declare -i i

for((i=180; i<205; i++)) ; do
    echo "-->BEGIN 192.168.1.$i"
    ping -t 4 192.168.1.$i
    echo "-->END 192.168.1.$i"
    echo ""
done

# EOF
```
sh myping.sh 
-->BEGIN 192.168.1.194
PING 192.168.1.194 (192.168.1.194): 56 data bytes

--- 192.168.1.194 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
-->END 192.168.1.194

-->BEGIN 192.168.1.195
PING 192.168.1.195 (192.168.1.195): 56 data bytes

--- 192.168.1.195 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
-->END 192.168.1.195

....


----------



## tantoillane (21 Août 2008)

ah oui, là ça marche, j'ai enregistré le fichier dans ma maison au lieu de le mettre sur le bureau, je crois que tu m'avais déjà fait cette remarque, il semblerait qu'elle soit toujours d'actualité. 

Merci

Je crois que je vais étudier d'un peu plus près le principe du script bourne, ça à l'air très pratique pour des opérations beta mais répétitives (ce que l'on préfère donner à faire à un ordi qu'à soi)


----------



## tatouille (21 Août 2008)

tantoillane a dit:


> ah oui, là ça marche, j'ai enregistré le fichier dans ma maison au lieu de le mettre sur le bureau, je crois que tu m'avais déjà fait cette remarque, il semblerait qu'elle soit toujours d'actualité.
> 
> Merci
> 
> Je crois que je vais étudier d'un peu plus près le principe du script bourne, ça à l'air très pratique pour des opérations beta mais répétitives (ce que l'on préfère donner à faire à un ordi qu'à soi)



le bourne shell est quelque chose de tres puissant et [SIZE=-1]_indissociable_[/SIZE] de ton operating system


----------



## grumff (21 Août 2008)

tantoillane a dit:


> 2) J'ai essayer le truc de l'ami tatouille (faut bien quand même, c'est mon prof), mais je ne sais pas trop si c'est en C ou en langage unix. J'ai quand même copier le premier code dans smultron, enregistré en myping.sh ; tapé sh myping.sh dans le terminal, et ça ne fais rien. c'est comme si c'était déjà fini.



Essaye plutôt ma méthode 
ping -t 4 192.168.1.255

Et pas une ligne de plus.


----------

