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 :

Scripter mise à jour + alerte modification IP serveur


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    amateur solutions réseaux
    Inscrit en
    Juillet 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur solutions réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Scripter mise à jour + alerte modification IP serveur
    Bonjour ;

    Je suis débutant dans le monde de la configuration des serveurs.
    J’ai mis en route un petit VPS avec Debian 8 dessus que je vais utiliser pour faire des « cron » depuis une adresse IP fixe.

    Suite à la réussite de l’installation …. Youpi 😊 me viens une autre idée d’utilisation :
    Je voudrais utiliser ce serveur pour rediriger l' IP_serveur :5000 vers IP_ma_box :5000
    J’ai un DynHost (OVH) qui pointe sur mon réseau privé

    Je souhaite utiliser iptables pour faire cette redirection ……
    Est-ce possible ?
    Est-ce le bon outil ?

    J’ai glané sur le net des règles iptables.

    Voici le truc que j’ai pondu et qui ne fonctionne pas.
    Je ne trouve pas (entre autres) comment intégrer les variables $IP_HOST_xx dans les lignes iptables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #/bin/sh
    HOST_IP_H= dig +short ip du box
    echo $HOST_IP_H
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5000 -j DNAT --to-destination $HOST_IP_H:5000
    iptables -A FORWARD -i eth0 -p tcp --dport 5000 -j ACCEPT
    Une aide serait bien venue
    Merci

    Hervé

  2. #2
    Futur Membre du Club
    Homme Profil pro
    amateur solutions réseaux
    Inscrit en
    Juillet 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur solutions réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour;

    J'ai essayé avec ${HOST_IP_H}:5000

    pas mieux
    :-(

    Hervé

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

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

    c'est plus un problème de syntaxe shell, pour l'instant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ipBox="xxx.xxx.xxx.xxx" # à remplacer avec l'adresse externe de ta box, je présume. ;)
    HOST_IP_H=$(dig +short "$ipBox")
    Edit: attends, attends... à quoi sert dig si tu as déjà l'adresse IP de ta box ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    amateur solutions réseaux
    Inscrit en
    Juillet 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur solutions réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour;

    Moi je connais l'adresse extérieure de la box mais le serveur VPS .... non

    Dans l'idéal je souhaite écrire un script qui :
    - va chercher l'IP dynamique de la box
    - la compare avec l'adresse mis en mémoire précedement
    - dans le cas ou l'adresse IP de la box a changé efface et crée de nouvelles redirection d'IP et de port.

    Ce que j'ai aujourd'hui
    - un serveur VPS avec Debian 8 et avec une IP fixe
    - un nom de domaine géré par DynHost ou No-ip qui pointe vers ma box.

    Après est il possible de créer une IP fixe "virtuelle" pour ma box avec ce système, t'elle est la question ?

    J'utilise avec des compaires des applications qui transferts des data par des ports spécifiques.
    Je doit à chaque changement d'IP de la box avertir mes compaires pour qu'ils reconfigurent les paramètres de connexion.
    Si il était possible de rentrer l'adresse IP de mon VPS avec un port et qui celui ci redirige vers ma box sur le port de l'application ..... cela serait le pied :-)

    Bonne journée

    Hervé

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    je souhaite écrire un script qui :
    - va chercher l'IP dynamique de la box
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nomBox='nom de domaine géré par DynHost ou No-ip qui pointe vers ma box'
    ipBox=$(dig +short "$nomBox") # les noms de variables tout en majuscules sont reservés, par convention, aux variables d'environnement.
    - la compare avec l'adresse mis en mémoire précédement
    - dans le cas ou l'adresse IP de la box a changé efface et crée de nouvelles redirection d'IP et de port.
    Je doit à chaque changement d'IP de la box avertir mes compaires pour qu'ils reconfigurent les paramètres de connexion.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -q "$ipBox" /je/sais/pas/|| echo "$ipBox" mail -s "nouvelle adresse serveur" -c monCop1@chez.lui monCop2@chez.lui monCop3@chez.lui
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    amateur solutions réseaux
    Inscrit en
    Juillet 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur solutions réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour;

    La finalité du script est d'automatisé le bazar afin que tous soit transparent pour les compères :-)

    Je ne comprends pas tout dans cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -q "$ipBox" /je/sais/pas/|| echo "$ipBox" mail -s "nouvelle adresse serveur" -c monCop1@chez.lui monCop2@chez.lui monCop3@chez.lui
    Vous demander d'aller chercher "$ipbox" où ?
    Dans un fichier que je doit créer ?

    Merci

    Ca fonctionne !!!!

    Après exécution du script voici le résultat d'une iptables -t nat -n -L.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination
    DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9000 to:92.144.xxx.xxx:9000
    sur ma box j'ai créer une NAT/PAT qui redirige le port 9000 vers le port 80 d'un raspberry.

    Que me conseilliez vous pour automatiser le script :
    une tache crontab ?
    un script en boucle ?

    Hervé

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    Vous demandez d'aller chercher "$ipbox" où ?
    justement, /je/ne/sais/pas/ !
    tu ne sembles pas trop impliqué dans la réalisation de ce script.
    je vais essayer de ne pas tout faire !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    si existe /je/ne/sais/pas//ipBox.stock
    alors
       grep ...
    autre
       envoyer ipBox dans /je/ne/sais/pas//ipBox.stock
    finSi
    Que me conseilliez vous pour automatiser le script :
    une tache crontab ?
    un script en boucle ?
    un service (Debian 8 utilise systemd) exécuté au démarrage (après l'exécution du service réseau, bien sûr).
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    amateur solutions réseaux
    Inscrit en
    Juillet 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur solutions réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    tu ne sembles pas trop impliqué dans la réalisation de ce script.
    Il me semble qui si ........
    Il faut donc que je crée un fichier avec la valeur ipBox dedans , ce que j'ai fait.

    Après je comprends mieux la suite.

    je vais essayer de ne pas tout faire !
    :-( (humour)


    un service (Debian 8 utilise systemd) exécuté au démarrage (après l'exécution du service réseau, bien sûr)
    Je regarde



    Merci

    Hervé

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    amateur solutions réseaux
    Inscrit en
    Juillet 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur solutions réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Hello

    voila où j'en suis :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #/bin/sh
     
    urlbox="adresse no-ip de la box"
    ipBox=$(dig +short "$urlbox")
    echo $ipBox
     
    if [ -f host_h ]
     then
      ipBox_old=$(grep [1-9] < host_h)
      echo $ipBox_old
     else
      echo $ipBox > host_h
      ipBox_old=$ipBox
    fi
     
    if [ $ipBox != $ipBox_old ]
     then
     echo $ipBox | mail -s "La nouvelle ip est arrivée" monmail@penguin.labanquise
     
     #echo 1 > /proc/sys/net/ipv4/ip_forward
     iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
     iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9000 -j DNAT --to-destination $ipBox:9000
     iptables -A FORWARD -i eth0 -p tcp --dport 9000 -j ACCEPT
    fi
     
    echo $ipBox > host_h
    reste à faire:
    -activer le forwarding par default dans sysctl.conf
    -créer le cron ( pour l'instant je passe par la)
    -modifier la ligne iptables pour quelle prenne en charge la nouvelle ipBox.

    entre autres

    Hervé

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    version commentée :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #/bin/sh
     
    urlbox="adresse no-ip de la box"
    ipBox=$(dig +short "$urlbox")
    echo $ipBox
     
    if [ -f host_h ] # il faut donner le chemin vers le fichier, de préférence absolu.
    then
        ipBox_old=$(grep [1-9] < host_h) # la redirection est inutile.
        echo $ipBox_old
    else
        echo $ipBox > host_h
        ipBox_old=$ipBox # non, s'il n'existe pas de fichier host_h, alors il n'y a pas d'ancienne adresse.
    fi
     
    if [ $ipBox != $ipBox_old ] # il faut toujours mettre les variables entre guillemets. notamment au cas où l'une n'existerait pas.
    then
    # cette partie ne devrait être exécutée que si ipBox_old existe, donc dans la preemière parite de la condition précédente
        echo $ipBox | mail -s "La nouvelle ip est arrivée" monmail@penguin.labanquise
     
    # cette partie ci, par contre, doit être exécutée inconditionnellement, il me semble.
        #echo 1 > /proc/sys/net/ipv4/ip_forward
        iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
        iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9000 -j DNAT --to-destination $ipBox:9000
        iptables -A FORWARD -i eth0 -p tcp --dport 9000 -j ACCEPT
    fi
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    amateur solutions réseaux
    Inscrit en
    Juillet 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : amateur solutions réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour;

    Les modifs :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #/bin/sh
     
    #Recuperation de l'IP de la box (pointant vers domaine enregistré sur un service de gestion de DNS dynamique)
    #
     
    urlbox="adresse no-ip de la box"
    ipBox=$(dig +short "$urlbox")
    echo $ipBox
     
    #
    #Recuperation de l'IP enregistre par l'execution precedente du script
    #
     
    if [ -f ./host_h ]
     then
      ipBox_old=$(grep [1-9]  host_h)  #si fichier present le contenu est affecte a ipBox_old
      echo $ipBox_old
     else
      #echo $ipBox > host_h
      ipBox_old="0.0.0.0"   # sinon on affecte une IP "nul"
      echo $ipBox_old
    fi
     
     
     
     
    if [ "$ipBox" != "$ipBox_old" ]
     then
     #
     #si l'IP a changee = expedition d'un mail
      echo $ipBox | mail -s "nouvelle ip" hcontact@laposte.net
     
    #
    #la nouvelle regle est etablie
     
     echo 1 > /proc/sys/net/ipv4/ip_forward   #commenter si forwarding est  activé par dans défault /etc/sysctl.conf
     iptables -t nat -F       #suppression des tables NAT
     iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
     iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9000 -j DNAT --to-destination $ipBox:9000
     iptables -A FORWARD -i eth0 -p tcp --dport 9000 -j ACCEPT
     echo creation de la nouvelle table IP= $ipBox      #pour les tests
    fi
     
    echo $ipBox > host_h
    Perso je laisse la création des tables dans la condition if [ "$ipBox" != "$ipBox_old" ], si l'IP n'a pas changée la règle de redirection reste la même ..... il me semble ?

    Hervé

Discussions similaires

  1. Mise à jour de données sur serveur lié
    Par dezarnau dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/03/2007, 20h49
  2. [EJB3] Mise à jour des Entity coté serveur si modif coté client
    Par SeeNapse dans le forum Java EE
    Réponses: 8
    Dernier message: 23/01/2007, 08h46
  3. Vue non mise à jour après modification d'une table
    Par cybernet35 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 14h54
  4. Mise à jour champs modifés via formulaire
    Par Al3x dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/01/2006, 18h31

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