Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/12/2006, à 22:03

Tifred

Script Bash en Root

Bonjour tout le monde,

Voilà je cherche à ecrire un script

#!/bin/bash
sudo bash
echo "1" > /proc/sys/net/ipv4/ip_forward 
&& iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Mais ça ne marche pas...pourquoi ? big_smile

Dernière modification par Tifred (Le 21/01/2007, à 11:09)

Hors ligne

#2 Le 19/12/2006, à 10:55

blutch

Re : Script Bash en Root

la tout de suite, je ne vois pas pourquoi ça ne fonctionne pas, mais pourquoi ne pas plutôt faire comme ceci ? (je ne me suis jamais amusé avec l'option -o je dois dire :-/ )

#!/bin/bash
sudo bash
echo "1" > /proc/sys/net/ipv4/ip_forward 
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

Si vous m'avez compris, c'est que je me suis mal exprimé :/

Hors ligne

#3 Le 19/12/2006, à 12:10

kaworu

Re : Script Bash en Root

Salut !
Il faut échapper le retour à la ligne sinon le && ne fait pas de sens :

#!/bin/bash
sudo bash
echo "1" > /proc/sys/net/ipv4/ip_forward  \
&& iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Dernière modification par kaworu (Le 19/12/2006, à 12:10)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#4 Le 19/12/2006, à 22:06

Tifred

Re : Script Bash en Root

Merci
MAis c pas les iptables qui foire, puisqu'en lançant les trois lignes séparément dans une console ça marche roll
(et le retour à la ligne est ici pour la place il n'existe pas dans le script original kaworu)
bon je vire les "&&" et je place trois instructions (&& c'est pour les test logique ou c pour dire ça ET ça ?)

Dernière modification par Tifred (Le 19/12/2006, à 22:15)

Hors ligne

#5 Le 19/12/2006, à 22:35

kaworu

Re : Script Bash en Root

Salut !
&& c'est pour les test logiques et pour dire "ça ET ça".
Je te laisse regarder les test / valeurs de retour des fonction UNIX sur ma bible Bash :
http://abs.traduc.org/


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#6 Le 20/12/2006, à 23:14

JoelS

Re : Script Bash en Root

blutch a écrit :
#!/bin/bash
sudo bash
echo "1" > /proc/sys/net/ipv4/ip_forward 
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

Es-ce que tu sûr de vouloir faire comme ça ? Ton problème est bien que tes commandes concernant iptable (le echo ... et le iptable...) ne fonctionnent pas ? Parce que la, à mon avis, dans ton script shell, tu lances d'abord un sous-shell bash en tant que root, puis une fois que ce sous-shell est terminé et donc dans le shell courant (le script), tu essaies de modifier la conf d'iptable (et je suppose qu'en tant que toi, tu n'as pas les droits). A aucun moment les 2 dernières lignes s'exécutent dans le contexte du sous-shell bash en tant que root. La preuve, essaies ça:

moi@mamachine$ cat > toto
#!/bin/bash
sudo bash
id
<--la appuies sur Ctrl+C
moi@mamachine$ chmod 755 ./toto
moi@mamachine$ ./toto
root@mamachine# exit
uid=moi(1000) gid=moi(1000) ....
moi@mamachine$

Comme tu le vois la commande id s'est exécutée dans le contexte du script shell donc lancé par l'utilisateur moi, pas par root. 'sudo bash' t'as lancé un shell interactif sous root. Et l'évaluation du script passes à la ligne suivante quand la ligne courante a fini d'être exécutée. Dans le cas d'une commande interactive, c'est quand tu quittes la commande.

Bon si tu savais déjà tout ça, je ne vois ou est ton problème !

Hors ligne