Script batch sur Linux

Modifier l'adresse réseau en NAT

Le problème exposé dans ce sujet a été résolu.

Bonsoir à tous,

Ma question est quelle sont les commandes pour manipuler la cartes réseau ? Comme par exemple, comment ont peu créer un scripts batch qui modifie l’adresse IP ?

Je n’ai pas trouver beaucoup d’information à ce sujet.

La commande standard pour manipuler les interfaces réseaux est ip.

Anciennement, le standard était plutôt ifconfig mais désormais on utilise ip.

Par exemple : ip a pour avoir une liste des interfaces et la plupart des informations liées.

ip route (ou ip r) pour avoir les routes (IPv4).

+1 -0

Bonsoir à tous,

Ma question est quelle sont les commandes pour manipuler la cartes réseau ? Comme par exemple, comment ont peu créer un scripts batch qui modifie l’adresse IP ?

Je n’ai pas trouver beaucoup d’information à ce sujet.

Brendan Suzuki

Il va falloir être plus précis sur ce que tu cherches à faire exactement. Effectivement, comme le dit @ache la commande ip et notamment ses sous-commandes ip link (pour les cartes) et ip addr pour attribuer/enlever des adresses IP (v4 ou v6) semble être l’outil que tu recherches, mais difficile de t’aiguiller d’avantage sans plus d’informations.

Par ailleurs, sous Linux on parle plutôt de script Bash et non pas de script Batch ;)

En fait, je voudrais par exemple modifier une carte réseau pour mettre une nouvelle adresse IP static dessus avec l’utilisation d’un script. Donc en général, je cherche les ligne des commande permettant de modifier les modes/adresse d’une carte réseau.

Je cherche a faire ce qu’il fait dans le liens ci-dessous, mais sans utiliser le nano, le faire seulement en ligne de commande.

Il y a deux choses différentes :

  • configurer ses interfaces réseau de façon durable (donc modifier la configuration du système) ;
  • manipuler « en live » les interfaces et les adresses avec un script.

Tu as l’air de vouloir t’orienter vers la seconde option, si tu veux faire un script. (il n’est pas courant d’utiliser des scripts Bash pour modifier des configurations stables)

Ton lien date un peu, ifconfig ne se trouve pas toujours dans les dernières version des différentes distributions Linux. Je te conseille donc d’utiliser la nouvelle commande ip dans ton script, à moins que tu aies à supporter des vieilles versions bien-sûr.

En fait, je voudrais par exemple modifier une carte réseau pour mettre une nouvelle adresse IP static dessus avec l’utilisation d’un script. Donc en général, je cherche les ligne des commande permettant de modifier les modes/adresse d’une carte réseau.

Ajouter une adresse (v4 ou v6) à une interface (les droits de root sont souvent nécessaires) en précisant le masque de sous-réseau via la notation CIDR (/xx) :

# ip addr add dev tun0 10.8.2.88/24
# ip addr add dev tun0 2001:xxx:xxx::42/64

Supprimer :

# ip addr delete dev tun0 10.8.2.88/24
# ip addr delete dev tun0 2001:xxx:xxx::42/64

Bien-sûr, tu dois mettre ça avec des IP routables chez toi et en désignant la bonne interface. Chez moi c’est tun0, par exemple.

Selon ce que tu veux faire, il sera nécessaire d’ajuster la table de routage avec la sous commande ip route.

Pour les changements de mode des interfaces, tu as la sous commande ip link plutôt que ip addr. La syntaxe ressemble à ça :

# ip link set [iface] up
# ip link set [iface] down
# ip link set [iface] mtu 9000

L’interface [iface] est mise tantôt en UP (actif), tantôt en DOWN (inactif), puis un autre exemple où je définis le MTU à 9000 octets (c’est juste pour l’exemple).

Ça te donne une idée de la syntaxe.

Ne recopie pas les commandes ci-dessus si tu ne les comprends pas, au risque de perdre ta connectivité en cas de mauvaise manipulation ! ;)

Y a-t-il une raison particulière pour que tu aies à configurer les interfaces via un script plutôt que de laisser ton système se débrouiller avec DHCP (dans un réseau classique) ou encore de le configurer de façon stable dans ton système ?

Merci pour la réponse aussi détaillé. Cependant, j’ai quelque question sur ce que vous avez mentionné. 1- A quoi sert le dev dans la commande : # ip addr add dev tun0 10.8.2.88/24 2- Dans la commande : # ip link set [iface] up. Le iface serait pas plutôt : tun0 ?

Dans mon premier exemple j’ai mis tun0 car chez moi j’ai cette interface de disponible (et je ne risquais pas grand chose à lui attribuer/enlever des IP un peu au pif pour l’exemple). C’est à remplacer avec l’interface qui t’intéresse.

Dans le second exemple [iface] est à remplacer avec l’interface qui t’intéresse, là encore.

A quoi sert le dev dans la commande 

Il fait simplement partie de la syntaxe, il indique un device (dev).

Je me permets de ré-itérer sur la question de @Moté : quel est le besoin qui justifie toutes ces bidouilles ? De façon générale, on a rarement besoin de sortir tout ça.

+0 -0

ip est une commande complète mais également complexe.
Il faut un peu la pratiquer pour se faire la main et surtout beaucoup lire de documentation.

Le fichier /etc/network/interfaces est un fichier utilisé uniquement pas Debian et ses dérivés.

Pour fixer une adresse IP, on le fait au niveau du serveur DHCP. On fixe une IP en spécifiant un bail statique à la configuration du serveur DHCP.

Si on a pas de serveur DHCP (ou si on ne veux pas faire les choses proprement, ou pour d’autres raisons…), et qu’on veut utiliser IPv4, alors ben pas le choix :

# ip a a 192.168.0.42/24 dev eth0

Ajoute l’adresse 192.168.0.42 à l’interface eth0 un masque de 24bits. Manque plus qu’à ajouter la route :

# ip r a 192.168.0.0/24 dev eth0

Mais comme tu vois, ça fait beaucoup de si…

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte