Bonjour,
Heureux titulaire d'une connexion permanente par ADSL, mon pc est relié
au réseau mondial par un modem Alcatel SpeedTouchHome transformé en pro
grâce au site forpage.com. De ce fait, je ne connais mon adresse IP du
jour qu'en interrogeant ce modem-routeur par telnet ou par son interface
web. Jusqu'ici c'est facile, même pour moi.
Mais je souhaiterais automatiser cette récupération à l'aide d'un script
qui serait exécuté toutes les heures grâce à cron et qui rajouterait à
la fin d'un fichier date, heure et adresse IP. Or, en shell, je ne vois
pas de commande susceptible d'initier et entretenir le dialogue sous
telnet. (Pour obtenir l'information recherchée il faut d'abord saisir
login et mot de passe.) Je ne vois pas non plus comment introduire des
temporisations dans cet improbable dialogue.
De son côté, minicom ne semble fait que pour les échanges par port série.
Pouvez vous m'orienter vers un procédé permettant d'atteindre le but
recherché avec les outils linux, s'il n'est pas trop ambitieux ?
Merci d'avance.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Frédéric BISSON
Bonjour, Bonjour !
Heureux titulaire d'une connexion permanente par ADSL, mon pc est relié au réseau mondial par un modem Alcatel SpeedTouchHome transformé en pro grâce au site forpage.com. De ce fait, je ne connais mon adresse IP du jour qu'en interrogeant ce modem-routeur par telnet ou par son interface web. Jusqu'ici c'est facile, même pour moi. Je suis exactement dans le même cas !
J'ai moi aussi ce modem transformé en Pro :)
Mais je souhaiterais automatiser cette récupération à l'aide d'un script qui serait exécuté toutes les heures grâce à cron et qui rajouterait à la fin d'un fichier date, heure et adresse IP. Or, en shell, je ne vois pas de commande susceptible d'initier et entretenir le dialogue sous telnet. (Pour obtenir l'information recherchée il faut d'abord saisir login et mot de passe.) Je ne vois pas non plus comment introduire des temporisations dans cet improbable dialogue. Voici ma solution et mon cas :
- j'ai un compte sur http://www.dyndns.org - j'ai l'utilitaire wget (probablement livré sur les distributions) - j'ai l'utilitaire ez-ipupdate (liens sur le site de dyndns) - j'ai écrit un petit script (dont tu trouveras le source à la fin)
Le principe est d'aller récupérer régulièrement l'adresse internet de ma machine sur www.myip.com par l'intermédiaire de wget (il doit surement y avoir une autre méthode plus optimale).
Je lance ce script avec 'nohup nice sh loopupdate.bash &' (je suis une grosse feignasse et je n'ai pas eu envie de me compliquer la vie avec cron ;-P )
Evidemment, tu n'oublieras pas de configurer les entrées NAT de ton modem/routeur, sans quoi on ne pourra pas t'atteindre de l'extérieur... (ni même d'ailleurs le firewall).
Tu pourras également te rendre compte que, de ta propre machine, tu ne pourras pas appeler ton serveur web par son adresse internet, le SpeedTouch n'arrive pas à suivre.
Bonne chance ! Frédéric
/////////////////////////////// Script loopupdate.bash //////////////////////////////////// Remplacer les chaînes ###USER###, ###PASSWORD### et ###SITEWEB### /////////////////////////////////////////////////////////////////////////////////////////// #!/bin/bash # ----------------------------------------------- # Define a function to update Internet IP address # ----------------------------------------------- function dyndnsupdate() { oldinternetipfile=/tmp/oldinternetip
# ------------------------------------- # Check whether wget has been installed # ------------------------------------- wgetpath=$(which wget 2> /dev/null) if [ "$wgetpath" = "" ] then echo "Unable to find wget" return 1 fi
# -------------------------------------------- # Check whether ez-ipupdate has been installed # -------------------------------------------- ezupdatepath=$(which ez-ipupdate 2> /dev/null) if [ "$ezupdatepath" = "" ] then echo "Unable to find ez-ipupdate" return 2 fi
# ---------------------------- # Retrieve Internet IP address # ---------------------------- internetip=$(wget -O - -q www.myip.com | sed 's/[^0-9.]//g')
if [ "$internetip" = "" ] then echo "Unable to find Internet IP address" return 3 fi
# ------------------------------------------------------- # Compare retrieved Internet IP address with previous one # ------------------------------------------------------- oldinternetip=$(cat $oldinternetipfile 2> /dev/null)
if [ "$oldinternetip" = "$internetip" ] then echo "Internet IP address need not be updated" return 4 fi
# -------------------------------------------- # Update Internet IP address on www.dyndns.org # -------------------------------------------- ez-ipupdate --user ###USER###:###PASSWORD### --service-type dyndns --interface eth0 --host ###SITEWEB### --address $internetip > /dev/null 2>&1
if [ "$?" -ne "0" ] then echo "Error while update Internet IP address" return 5 fi
# -------------------------------- # Save current Internet IP address # -------------------------------- echo $internetip > $oldinternetipfile
echo "Internet IP address updated"
return 0 }
# ---------------------------------------------------------- # Check every hour to see if Internet IP address has changed # ---------------------------------------------------------- while [ 1 -eq 1 ] do dyndnsupdate sleep 1h done /////////////////////////////// Script loopupdate.bash ////////////////////////////////////
Bonjour,
Bonjour !
Heureux titulaire d'une connexion permanente par ADSL, mon pc est relié
au réseau mondial par un modem Alcatel SpeedTouchHome transformé en pro
grâce au site forpage.com. De ce fait, je ne connais mon adresse IP du
jour qu'en interrogeant ce modem-routeur par telnet ou par son interface
web. Jusqu'ici c'est facile, même pour moi.
Je suis exactement dans le même cas !
J'ai moi aussi ce modem transformé en Pro :)
Mais je souhaiterais automatiser cette récupération à l'aide d'un script
qui serait exécuté toutes les heures grâce à cron et qui rajouterait à
la fin d'un fichier date, heure et adresse IP. Or, en shell, je ne vois
pas de commande susceptible d'initier et entretenir le dialogue sous
telnet. (Pour obtenir l'information recherchée il faut d'abord saisir
login et mot de passe.) Je ne vois pas non plus comment introduire des
temporisations dans cet improbable dialogue.
Voici ma solution et mon cas :
- j'ai un compte sur http://www.dyndns.org
- j'ai l'utilitaire wget (probablement livré sur les distributions)
- j'ai l'utilitaire ez-ipupdate (liens sur le site de dyndns)
- j'ai écrit un petit script (dont tu trouveras le source à la fin)
Le principe est d'aller récupérer régulièrement l'adresse internet de ma
machine sur www.myip.com par l'intermédiaire de wget (il doit surement y
avoir une autre méthode plus optimale).
Je lance ce script avec 'nohup nice sh loopupdate.bash &' (je suis une
grosse
feignasse et je n'ai pas eu envie de me compliquer la vie avec cron ;-P )
Evidemment, tu n'oublieras pas de configurer les entrées NAT de ton
modem/routeur, sans quoi on ne pourra pas t'atteindre de l'extérieur...
(ni même d'ailleurs le firewall).
Tu pourras également te rendre compte que, de ta propre machine, tu ne
pourras pas appeler ton serveur web par son adresse internet, le
SpeedTouch n'arrive pas à suivre.
Bonne chance !
Frédéric
/////////////////////////////// Script loopupdate.bash
////////////////////////////////////
Remplacer les chaînes ###USER###, ###PASSWORD### et ###SITEWEB###
///////////////////////////////////////////////////////////////////////////////////////////
#!/bin/bash
# -----------------------------------------------
# Define a function to update Internet IP address
# -----------------------------------------------
function dyndnsupdate() {
oldinternetipfile=/tmp/oldinternetip
# -------------------------------------
# Check whether wget has been installed
# -------------------------------------
wgetpath=$(which wget 2> /dev/null)
if [ "$wgetpath" = "" ]
then
echo "Unable to find wget"
return 1
fi
# --------------------------------------------
# Check whether ez-ipupdate has been installed
# --------------------------------------------
ezupdatepath=$(which ez-ipupdate 2> /dev/null)
if [ "$ezupdatepath" = "" ]
then
echo "Unable to find ez-ipupdate"
return 2
fi
# ----------------------------
# Retrieve Internet IP address
# ----------------------------
internetip=$(wget -O - -q www.myip.com | sed 's/[^0-9.]//g')
if [ "$internetip" = "" ]
then
echo "Unable to find Internet IP address"
return 3
fi
# -------------------------------------------------------
# Compare retrieved Internet IP address with previous one
# -------------------------------------------------------
oldinternetip=$(cat $oldinternetipfile 2> /dev/null)
if [ "$oldinternetip" = "$internetip" ]
then
echo "Internet IP address need not be updated"
return 4
fi
# --------------------------------------------
# Update Internet IP address on www.dyndns.org
# --------------------------------------------
ez-ipupdate --user ###USER###:###PASSWORD###
--service-type dyndns
--interface eth0
--host ###SITEWEB###
--address $internetip > /dev/null 2>&1
if [ "$?" -ne "0" ]
then
echo "Error while update Internet IP address"
return 5
fi
# --------------------------------
# Save current Internet IP address
# --------------------------------
echo $internetip > $oldinternetipfile
echo "Internet IP address updated"
return 0
}
# ----------------------------------------------------------
# Check every hour to see if Internet IP address has changed
# ----------------------------------------------------------
while [ 1 -eq 1 ]
do
dyndnsupdate
sleep 1h
done
/////////////////////////////// Script loopupdate.bash
////////////////////////////////////
Heureux titulaire d'une connexion permanente par ADSL, mon pc est relié au réseau mondial par un modem Alcatel SpeedTouchHome transformé en pro grâce au site forpage.com. De ce fait, je ne connais mon adresse IP du jour qu'en interrogeant ce modem-routeur par telnet ou par son interface web. Jusqu'ici c'est facile, même pour moi. Je suis exactement dans le même cas !
J'ai moi aussi ce modem transformé en Pro :)
Mais je souhaiterais automatiser cette récupération à l'aide d'un script qui serait exécuté toutes les heures grâce à cron et qui rajouterait à la fin d'un fichier date, heure et adresse IP. Or, en shell, je ne vois pas de commande susceptible d'initier et entretenir le dialogue sous telnet. (Pour obtenir l'information recherchée il faut d'abord saisir login et mot de passe.) Je ne vois pas non plus comment introduire des temporisations dans cet improbable dialogue. Voici ma solution et mon cas :
- j'ai un compte sur http://www.dyndns.org - j'ai l'utilitaire wget (probablement livré sur les distributions) - j'ai l'utilitaire ez-ipupdate (liens sur le site de dyndns) - j'ai écrit un petit script (dont tu trouveras le source à la fin)
Le principe est d'aller récupérer régulièrement l'adresse internet de ma machine sur www.myip.com par l'intermédiaire de wget (il doit surement y avoir une autre méthode plus optimale).
Je lance ce script avec 'nohup nice sh loopupdate.bash &' (je suis une grosse feignasse et je n'ai pas eu envie de me compliquer la vie avec cron ;-P )
Evidemment, tu n'oublieras pas de configurer les entrées NAT de ton modem/routeur, sans quoi on ne pourra pas t'atteindre de l'extérieur... (ni même d'ailleurs le firewall).
Tu pourras également te rendre compte que, de ta propre machine, tu ne pourras pas appeler ton serveur web par son adresse internet, le SpeedTouch n'arrive pas à suivre.
Bonne chance ! Frédéric
/////////////////////////////// Script loopupdate.bash //////////////////////////////////// Remplacer les chaînes ###USER###, ###PASSWORD### et ###SITEWEB### /////////////////////////////////////////////////////////////////////////////////////////// #!/bin/bash # ----------------------------------------------- # Define a function to update Internet IP address # ----------------------------------------------- function dyndnsupdate() { oldinternetipfile=/tmp/oldinternetip
# ------------------------------------- # Check whether wget has been installed # ------------------------------------- wgetpath=$(which wget 2> /dev/null) if [ "$wgetpath" = "" ] then echo "Unable to find wget" return 1 fi
# -------------------------------------------- # Check whether ez-ipupdate has been installed # -------------------------------------------- ezupdatepath=$(which ez-ipupdate 2> /dev/null) if [ "$ezupdatepath" = "" ] then echo "Unable to find ez-ipupdate" return 2 fi
# ---------------------------- # Retrieve Internet IP address # ---------------------------- internetip=$(wget -O - -q www.myip.com | sed 's/[^0-9.]//g')
if [ "$internetip" = "" ] then echo "Unable to find Internet IP address" return 3 fi
# ------------------------------------------------------- # Compare retrieved Internet IP address with previous one # ------------------------------------------------------- oldinternetip=$(cat $oldinternetipfile 2> /dev/null)
if [ "$oldinternetip" = "$internetip" ] then echo "Internet IP address need not be updated" return 4 fi
# -------------------------------------------- # Update Internet IP address on www.dyndns.org # -------------------------------------------- ez-ipupdate --user ###USER###:###PASSWORD### --service-type dyndns --interface eth0 --host ###SITEWEB### --address $internetip > /dev/null 2>&1
if [ "$?" -ne "0" ] then echo "Error while update Internet IP address" return 5 fi
# -------------------------------- # Save current Internet IP address # -------------------------------- echo $internetip > $oldinternetipfile
echo "Internet IP address updated"
return 0 }
# ---------------------------------------------------------- # Check every hour to see if Internet IP address has changed # ---------------------------------------------------------- while [ 1 -eq 1 ] do dyndnsupdate sleep 1h done /////////////////////////////// Script loopupdate.bash ////////////////////////////////////
Michel Tatoute
Bonjour, Heureux titulaire d'une connexion permanente par ADSL[...] De ce fait, je ne connais mon adresse IP du jour qu'en interrogeant ce modem-routeur par telnet ou par son interface web.
a priori tu devrais facilement trouver l'ip de ton routeur avec tracepath ou traceroute.
Michel.
Bonjour,
Heureux titulaire d'une connexion permanente par ADSL[...]
De ce fait, je ne connais mon adresse IP du
jour qu'en interrogeant ce modem-routeur par telnet ou par son interface
web.
a priori tu devrais facilement trouver l'ip de ton routeur avec tracepath
ou traceroute.
Bonjour, Heureux titulaire d'une connexion permanente par ADSL[...] De ce fait, je ne connais mon adresse IP du jour qu'en interrogeant ce modem-routeur par telnet ou par son interface web.
a priori tu devrais facilement trouver l'ip de ton routeur avec tracepath ou traceroute.
Michel.
TiChou
Dans l'article news:buc8aj$gk7$, Geo Cherchetout écrivait :
Bonjour,
Bonsoir,
Heureux titulaire d'une connexion permanente par ADSL, mon pc est relié au réseau mondial par un modem Alcatel SpeedTouchHome transformé en pro grâce au site forpage.com. De ce fait, je ne connais mon adresse IP du jour qu'en interrogeant ce modem-routeur par telnet ou par son interface web. Jusqu'ici c'est facile, même pour moi. Mais je souhaiterais automatiser cette récupération à l'aide d'un script qui serait exécuté toutes les heures grâce à cron et qui rajouterait à la fin d'un fichier date, heure et adresse IP. Or, en shell, je ne vois pas de commande susceptible d'initier et entretenir le dialogue sous telnet. (Pour obtenir l'information recherchée il faut d'abord saisir login et mot de passe.) Je ne vois pas non plus comment introduire des temporisations dans cet improbable dialogue. De son côté, minicom ne semble fait que pour les échanges par port série. Pouvez vous m'orienter vers un procédé permettant d'atteindre le but recherché avec les outils linux, s'il n'est pas trop ambitieux
On peut faire cela avec bash, avec l'outil netcat (indispensable ! ;) ou avec perl et son module Net::Telnet.
Je vous propose une solution avec bash, simpliste mais qui devrait vous satisfaire.
$ cat ip.sh #!/bin/bash
LOGIN=foo PASSºr
ROUTER.0.0.138 COMMAND=":ip aplist"
{ 3<>/dev/tcp/$ROUTER/23; } &>/dev/null || { echo "Impossible de se connecter !" >&2; exit 1; }
sleep 1
while : do read -t 4 -n 1 -u 3 || { echo "Temps dépassé !" >&2; exit 1; }
buf="$buf$REPLY"
case "$buf" in User : ) echo -e "$LOGINr" >&3 ;; Invalid Password) echo "Mot de passe invalide !" >&2 exit 1 ;; Password : ) echo -e "$PASSr" >&3 ;; $'=>