Archive for octobre 14th, 2010

Bash : lire un fichier ligne par ligne avec une boucle while

Encore une fois, rien ne vaut l’apprentissage par l’exemple. Ci dessous le fichier bash exemple, qui va lire le fichier /etc/passwd ligne par ligne.

[bash]#!/bin/bash
while read line
do
echo ${line}
done < /etc/passwd[/bash]

donc ici, les lignes sont chargées dans la variable « line » et simplement affichées par la commande echo, mais on peut utiliser ça dans bien des situations ;)

Note : Pour fonctionner, ce fichier doit être appelé par la commande [bash]sudo sh fichier.sh[/bash] ou, en le rendant exécutable après enregistrement, comme suit :

[bash]chmod +x fichier.sh[/bash]

Puis est lançable directement :

[bash]sudo ./fichier.sh[/bash].

On utilise ici « sudo » car il y a des chances que ce fichier ne soit accessible que par le compte root.

Loading

Tags: , , , , , , ,

jeudi, octobre 14th, 2010 Bash, GNU - Linux, Technologie Aucun commentaire

Bash – les boucles for

Voici quelques exemples des boucles "FOR" en bash, car, rien ne vaut les exemples pour apprendre.

Pour tester ces exemples, créer un fichier test.sh et le commencer par :

[bash] #!/bin/bash
#Ceci defini l’interpreteur[/bash]

Puis coller les exemples désirés, et rendez le fichier exécutable : chmod +x test.sh, et le lancer : ./test.sh

Executer une boucle for sur le contenu d'un dossier :
[bash] for i in `ls`; do
echo "ligne : "$i;
done [/bash]

Executer une boucle for sur un compteur croissant :
[bash] for (( i=1; i<=10; i++ ))
do
echo "Compte : "$i;
done[/bash]

Executer une boucle for sur un compteur décroissant :
[bash]nb_min=0
for (( i=10; i>=${nb_min}; i– ))
do
echo "Decompte : "$i;
done[/bash]

Voila voila ! J'espère que ça vous sera utile :)

Loading

Tags: , , , , , , ,

jeudi, octobre 14th, 2010 Bash, GNU - Linux, Technologie Aucun commentaire

Ajouter une route sous GNU/Linux en IPV4

Encore un "tips", pour ceux qui souhaitent ajouter une route sur une machine GNU/Linux.

Voici la commande :

[bash]route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.25[/bash]

Explication de l'exemple :

ici l'ip 192.168.1.0 correspond au réseau cible (celui pour lequel on va définir la route par laquelle passer pour l'atteindre).

Le masque 255.255.255.0 (/24) est le masque du reseau cible (il défini la plage d'adresse utilisable dans le reseau cible).

Enfin, 192.168.0.25 est la machine assurant le routage (un routeur, ou une machine sous Linux configurée pour cela).

En gros, verbalement ça donne, en parlant au système : Si tu veux joindre le reseau 192.168.1.0, tu dois le demander à 192.168.0.25.

Attention, pour être routables, les réseaux ne doivent pas etre sur la même classe, ou , au moins, pas dans le même masque ! Sinon, c'est evidemment impossible à mettre en oeuvre.

L'utilité d'une telle commande est par exemple, de permettre l'interconnexion de réseaux dans le cadre d'utilisation de VPN pour faire communiquer 2 sites distants. Idéalement, l'ajout de route se fait sur le routeur par défaut (la passerelle) utilisée sur un reseau, ainsi l'ensemble des postes peuvent atteindre le réseau distant. Cependant, il arrive que certaines passerelles ne soient pas configurables de cette façon, et il faut donc ajouter la route sur chacun des postes devant utiliser l'accès à une route particulière.

Vous pouvez ajouter cette commande dans le fichier /etc/rc.local de votre machine (en le rendant executable s'il ne l'est pas chmod +x /etc/rc.local) et en utilisant de préférence le chemin complet
/sbin/route (car le binaire n'est par forcément dans le "PATH" par défaut).

Loading

Tags: , , , , , , , , ,

jeudi, octobre 14th, 2010 GNU - Linux, Reseau, Technologie Aucun commentaire