[RESOLU] recupere des valeurs dans un fichier a partir d'un script

recupere des valeurs dans un fichier a partir d'un script [RESOLU] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 10-05-2007 à 17:32:58    

Salut a tous,
j'ai un script qui fabrique des regles du firewall en fonction d'ip qui se trouvent dans un autre fichier comme ceci :
 
le bout de script qui nous interesse :
 
cat /etc/rc.d/firewall/serveurs | while read lig; do  
    /sbin/iptables -A CUSTOMFORWARD -s $lig -j ACCEPT;
done
 
et dans le fichier /etc/rc.d/firewall/serveurs :
192.168.1.20
192.168.1.5
 
vous l'avez compris, le script lit ligne par lgne le fichier, et lance la commande avec le contenu de la ligne
 
seulement voila, dans la variable $lig, qui contient donc successivement toutes les lignes, il y a le '\n' de la fin de ligne!
je l'ai vu en faisant un echo de la commande, elle revient a la ligne juste apres l'adresse ip.
 
avez vous une solution? soit pour lire un fichier ligne par ligne autrement, soit pour enlever le '\n' avant de lancer la commande

Message cité 1 fois
Message édité par clementcadbury le 11-05-2007 à 10:49:43
Reply

Marsh Posté le 10-05-2007 à 17:32:58   

Reply

Marsh Posté le 10-05-2007 à 17:49:35    

clementcadbury a écrit :


seulement voila, dans la variable $lig, qui contient donc successivement toutes les lignes, il y a le '\n' de la fin de ligne!
je l'ai vu en faisant un echo de la commande, elle revient a la ligne juste apres l'adresse ip.


 
C'est pas normal ça, les \n, les espaces et les tabs doivent être ignorés normalement.  [:noxauror]  (Il faut aussi se méfier d'echo, par défaut, il ajoute un \n à la fin de la chaine passée en paramètre. )  
 
Sinon, tu insère un  

tr \\n " "


entre ton cat et ton while


---------------
C'est pas bon, Neriki, tu recommences à glander, là. :o
Reply

Marsh Posté le 11-05-2007 à 10:25:44    

en fait il s'agit d'une stupide erreur de ma part :
j'ai édité le fichier /etc/rc.d/firewall/serveurs sous windows,
l'éditeur a donc mis un retour chariot windows (\r\n) alors que unix ne prend en compte que le \n,
c'est pourquoi le \r restait ...
désolé  :)

Reply

Marsh Posté le 11-05-2007 à 10:31:20    

tu devrais éditer ton sujet et mettre [RESOLU]  :)


---------------
-_- http://www.scienceshopping.com -_-
Reply

Marsh Posté le 11-05-2007 à 10:51:46    

voila c'est fait
 
sinon pour transformer les retours, j'utilise l'excellent notepad++,
dans le menu format, et convertir en format UNIX
et hop tout va bien!
en plus il garde le format d'origine

Reply

Marsh Posté le 11-05-2007 à 12:02:25    

dos2unix...


---------------
-_- http://www.scienceshopping.com -_-
Reply

Sujets relatifs:

Leave a Replay

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