Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Affichage des résultats 1 à 9 sur 9
  1. #1
    Salut à tous !

    Je cherche à automatiser ce que je fais tous les matins:

    1- Connexion au VPN (configuré pour ne pas passer par la passerelle par défaut) - OK
    2- Ajout des routes nécessaires pour accéder aux sites/ressources uniquement accessibles depuis le serveur VPN (auquel j'ai accès via Terminal Server) avec la commande:

    Route add <ip cible> mask <masque> <mon ip sur le réseau>

    J'ai une liste fixe d'ip cibles uniquement accessibles depuis le VPN (généralement en 192.168.n.n).
    Le masque est fixe également.
    Par contre mon IP sur le réseau change à chaque connexion.

    Pour le premier point, j'ai la commande rasdial qui connecte mon VPN, pas de soucis.

    Par contre pour les ajouts de route, je ne sais pas comment récupérer mon ip sur le VPN de manière dynamique. La commande Ipconfig me donne évidemment ça, mais je ne vois pas comment l'exploiter dans un .bat.

    Si ce n'est pas possible en .bat, je me tournerai vers du VBScript ou autre, mais je serais surpris qu'il n'y ait pas une commande dos qui retourne juste l'adresse ip d'un réseau.

    D'avance merci les canards

  2. #2
    Sur Linux/Unix, tu aurais pu faire ça en une ligne (genre ifconfig | grep ... | sed ...), mais il semble qu'il n'y ait pas d'équivalent pour Windows, voire avec les éventuelles options que propose ifconfig, mais avec ipconfig, il n'y a rien concernant le formatage de la sortie.

    J'arrive à afficher la ligne qui contient l'IP avec ça :
    Code:
    Ipconfig > C:\temp.txt
    Find "IP Address" C:\temp.txt > C:\temp2.txt
    Find "192.168.0." C:\temp2.txt
    C'est pas très beau, et ca donne "IP Address. . . . 192.168.0....".
    Je ne connais pas la commande qui permet de faire des regexp en DOS (si elle existe...).


    Le mieux serait peut être d'installer cygwin et d'écrire un ksh...

  3. #3
    Citation Envoyé par Maxwell Voir le message
    Salut à tous !

    Je cherche à automatiser ce que je fais tous les matins:

    1- Connexion au VPN (configuré pour ne pas passer par la passerelle par défaut) - OK
    2- Ajout des routes nécessaires pour accéder aux sites/ressources uniquement accessibles depuis le serveur VPN (auquel j'ai accès via Terminal Server) avec la commande:

    Route add <ip cible> mask <masque> <mon ip sur le réseau>

    J'ai une liste fixe d'ip cibles uniquement accessibles depuis le VPN (généralement en 192.168.n.n).
    Le masque est fixe également.
    Par contre mon IP sur le réseau change à chaque connexion.

    Pour le premier point, j'ai la commande rasdial qui connecte mon VPN, pas de soucis.

    Par contre pour les ajouts de route, je ne sais pas comment récupérer mon ip sur le VPN de manière dynamique. La commande Ipconfig me donne évidemment ça, mais je ne vois pas comment l'exploiter dans un .bat.

    Si ce n'est pas possible en .bat, je me tournerai vers du VBScript ou autre, mais je serais surpris qu'il n'y ait pas une commande dos qui retourne juste l'adresse ip d'un réseau.

    D'avance merci les canards
    Hello je ne vais pas etre super précis (il est tard) mais voici ce que j'obtiens (je suis sous windows 7 mais si mes souvenirs sont bons ça devrait marcher aussi sous xp) :
    Avec ipconfig j'obtiens ça :
    Code:
    Configuration IP de Windows
    
    
    Carte Ethernet Connexion au réseau local 2 :
    
       Statut du média. . . . . . . . . . . . : Média déconnecté
       Suffixe DNS propre à la connexion. . . :
    
    Carte Ethernet Connexion au réseau local :
    
       Suffixe DNS propre à la connexion. . . :
       Adresse IPv6 de liaison locale. . . . .: fe80::8400:d969:1558:ef78%11
       Adresse IPv4. . . . . . . . . . . . . .: 192.168.1.100
       Masque de sous-réseau. . . . . . . . . : 255.255.255.0
       Passerelle par défaut. . . . . . . . . : 192.168.1.1
    Avec cette ligne de commande :
    Code:
    ipconfig |findstr "Adresse " |findstr "IPv4"
    J'obtiens :
    Code:
     Adresse IPv4. . . . . . . . . . . . . .: 192.168.1.100
    Donc juste la ligne adéquate

    Apres pour couper la ligne mes souvenirs sont flous mais voici une bonne piste :
    http://www.dostips.com/DtTipsStringManipulation.php

    Voila j'espère que ça te sera utile.

  4. #4
    Citation Envoyé par Yasko Voir le message
    Le mieux serait peut être d'installer cygwin et d'écrire un ksh...
    Je l'aurais fait depuis longtemps, mais le but est également de pouvoir diffuser facilement ce script dans ma boite, et une installation supplémentaire n'est pas désirable.

    Merci quand même pour ton aide

    Citation Envoyé par fougny Voir le message
    Voila j'espère que ça te sera utile.
    Super utile, merci beaucoup.

    J'utilise donc cette commande:

    Code:
    >ipconfig |findstr "Adresse " |findstr "IPv4" |findstr "10.100"
       Adresse IPv4. . . . . . . . . . . : 10.100.10.150
    Car autrement j'obtenais 2 ligne (mon ip locale + celle du VPN)

    Dans le lien que tu m'as filé, il y a une méthode pour extraire une chaine de caractère en partant de la fin: très bien, l'ip fera toujours 13 caractères.

    Problème: je n'arrive pas à stocker le résultat de la commande dans une variable pour pouvoir l'exploiter. Est ce qu'il y a un équivalent du ` sous DOS ?

    Code:
    >set ip = ipconfig |findstr "Adresse " |findstr "IPv4" |findstr "10.100"
    
    >echo %ip%
    %ip%

  5. #5
    Alors parce que ça m'intéressait aussi j'ai googlé et apparemment pour stocker le résultat d'une commande il faut passer par un FOR et du coup tu peux même séparer tes blocs dans la foulée :

    Code:
    @echo off
    For /f "tokens=2 delims=:" %%i in ('@ipconfig ^|findstr "Adresse"') do echo %%i
    Il semblerait que les tokens soient là pour dire en combien de blocs tu veux séparer la chaîne, le delims pour lui dire à quoi ressemble le délimiteur qui va séparer ces mêmes blocs après tu fais la boucle et tu dis d'afficher telle itération.

    Moi ça me retourne que l'ip.

    Edit : optimization mais en fait il y a un espace devant l'ip j'arrive pas à lui faire délimiter ":<espace>" .

    Edit 2 : Ce truc marche (pas d'espace) :

    Code:
    @echo off
    For /f "tokens=2 delims= " %%i in ('arp.exe -a ^| find "Interface"') do echo %%i
    Dernière modification par caribou ; 23/06/2009 à 12h20.

  6. #6
    Tu peux aussi utiliser le powershell, et c'est 'achement plus simple:

    $listeIP=get-wmiObject -class "Win32_NetworkAdapterConfiguration" -computerName "." | where{$_.IpEnalbed -match "True}
    $listeIP

    Ou
    $listeIP.IPAddress

    Etc ...
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

  7. #7
    Je pense que...

    Citation Envoyé par Wanou Voir le message
    Tu peux aussi utiliser le powershell, et c'est 'achement plus simple:

    $listeIP=get-wmiObject -class "Win32_NetworkAdapterConfiguration" -computerName "." | where{$_.IpEnalbed -match "True}
    $listeIP

    Ou
    $listeIP.IPAddress

    Etc ...
    Citation Envoyé par Maxwell Voir le message
    Je l'aurais fait depuis longtemps, mais le but est également de pouvoir diffuser facilement ce script dans ma boite, et une installation supplémentaire n'est pas désirable.

    Merci quand même pour ton aide
    Voilà.

  8. #8
    Citation Envoyé par Maxwell Voir le message
    Problème: je n'arrive pas à stocker le résultat de la commande dans une variable pour pouvoir l'exploiter. Est ce qu'il y a un équivalent du ` sous DOS ?

    Code:
    >set ip = ipconfig |findstr "Adresse " |findstr "IPv4" |findstr "10.100"
    
    >echo %ip%
    %ip%
    Alors c'est vicieux (et je vieillis : j'avais un peu oublié).
    Apres un peu de recherche voici la méthode qui marche :
    Code:
    For /f "tokens=*"  %%a in ('"ipconfig|find "Adresse IP""') do set ip=%%a
    Echo %ip%
    (attention ça ne marche que dans un batch , pas en ligne de commande)
    Pour que ça marche en ligne de commande ça devient :
    Code:
    For /F "tokens=*" %a in ('"ipconfig|find "Adresse IP""') do set ip=%a
    Bon faut remettre ta commande dans les parenthése (n'oublie pas les cotes non plus) et tu devrais pouvoir couper ensuite.

  9. #9
    Caribou, Fougny...



    Voici donc à quoi ressemble le script:

    Code:
    @echo off
    Rem Connexion au VPN
    Rasdial <nom de la connexion> <utilisateur> <mot de passe>
    
    Rem Récupération de l'adresse ip sur le VPN (commence par 10.100)
    For /f "tokens=2 delims=:"  %%a in ('"ipconfig |findstr "Adresse " |findstr "IPv4" |findstr "10.100""') do set ip=%%a
    
    @echo  
    @echo Ajout des routes...
    
    Route add 192.168.101.20 mask 255.255.255.255 %ip%
    Route add etc...

    Un grand merci à tous !

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •