IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Changer IP en bash


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 47
    Points : 27
    Points
    27
    Par défaut Changer IP en bash
    Bonjour, je possède un serveur qui doit changer d'IP toutes les 30mn selon une plage IP allant de 192.168.0.1 à 192.168.0.30 avec une tâche cron

    Ainsi, par exemple, à 19h, le serveur a pour IP 192.168.0.1, puis à 19h30 : 192.168.0.2 et ainsi de suite. Une fois arrivé à la dernière IP de la plage, on recommence à 0.

    J'ai pensé à un script qui va chercher les IP dans un fichier texte, mais je ne sais vraiment pas.

    Merci.

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    D'abord, d'où vient cette adresse ? As-tu un serveur dhcp ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    C'est une plage d'IP abstraite dans un labo que j'effectue. Je n'ai pas de DHCP, l'attribution doit se faire en statique.

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Tu peux très bien aller chercher la dernière adresse avec ifconfig pour en extraire la dernière partie, quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ADR=`ifconfig eth0 | awk '$1=="inet"{print $2;exit}'`
    ADR=${ADR##*.}
    [[ $ADR > 29 ]] && ADR=1 || ((ADR++))
     
    ifconfig eth0 192.168.0.$ADR netmask 255.255.255.0 up
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[ $ADR > 29 ]] && ADR=1 || ((ADR++))
    On peut aussi utiliser:
    Comme ci-après:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ ADR=0; for ((i=1;i<100;i++));do ADR=$((ADR%30+1));printf "%s " $ADR;done
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Bonjour, ce script a l'air de marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #! /bin/bash
     
    i=1
     
    while :
    do
       for (( i=1; i<=30; i++ ))
       do
          ifconfig eth0 192.168.0.${i} netmask 255.255.255.0
          ifdown eth0 && ifup eth0
          [ "${i}" -ge 30 ] && ( i=1; echo "Réinitialisation compteur." )
          sleep 30m
       done
    done

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ "${i}" -ge 30 ] && ( i=1; echo "Réinitialisation compteur." )
    ceci n'est pas utile.
    d'une part, i est assigné dans un sous-shell (entre parenthèses) en-dehors duquel il gardera sa valeur courante (pas celle assignée).
    ensuite, parce la boucle for redémarrera (à cause de la boucle infinie) en assignant 1 à i.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    D'accord je comprends. J'enlève donc cette ligne.

    Merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [GIT] Changer de disque local en Git Bash
    Par Suicker dans le forum ALM
    Réponses: 4
    Dernier message: 21/03/2013, 09h05
  2. changer une option dans un makefile avec un script bash
    Par dedey63 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/07/2012, 13h56
  3. Script bash envoie mail, changer mail expéditeur
    Par jfsenechal dans le forum Administration système
    Réponses: 3
    Dernier message: 03/08/2010, 15h13
  4. changer de repertoire et situer
    Par chateau dans le forum C
    Réponses: 4
    Dernier message: 24/06/2002, 11h27
  5. changer l'adresse d'un fichier...
    Par cava dans le forum C
    Réponses: 6
    Dernier message: 05/06/2002, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo