Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

script shell détectant si la connection au net existe

10 réponses
Avatar
yvon.thoravalNOSPAM
Je viens d'installer leafnode sur mon iBook et je souhaite, à fin de
lancer fetchnews écrire un petit script shell, ou perl, ou ruby,
lançable à partir de la cron qui lance fetchnews en s'assurant qu'une
connection vers le net existe (cas d'un portable non tjs connecté).

Donc, question, comment détecter la possibilité d'une connection, est-ce
possible sans en lancer une ?

--
yt

10 réponses

Avatar
lists
Yvon Thoraval wrote:

Donc, question, comment détecter la possibilité d'une connection, est-ce
possible sans en lancer une ?


J'ai trouvé ça mais ça n'est valable que pour les connections PPP (y
compris PPPoE) :

http://www.linuxquestions.org/questions/archive/9/2003/09/4/97612

--
R: Parce que ça renverse bêtement l'ordre naturel de lecture!
Q: Mais pourquoi citer en fin d'article est-il si effroyable?
R: Citer en fin d'article
Q: Quelle est la chose la plus désagréable sur les groupes de news?

Avatar
lists
Julien Salort wrote:

J'ai trouvé ça mais ça n'est valable que pour les connections PPP (y
compris PPPoE) :

http://www.linuxquestions.org/questions/archive/9/2003/09/4/97612


Visiblement, avec ifconfig, il y a UP qui apparaît lorsque l'interface
est connectée.

On peut sans doute envisager :
ifconfig "en0" |grep "UP"

au lieu du :
ifconfig | grep ppp
qu'ils suggèrent.

--
R: Parce que ça renverse bêtement l'ordre naturel de lecture!
Q: Mais pourquoi citer en fin d'article est-il si effroyable?
R: Citer en fin d'article
Q: Quelle est la chose la plus désagréable sur les groupes de news?

Avatar
yvon.thoravalNO-SPAM
Julien Salort wrote:

On peut sans doute envisager :
ifconfig "en0" |grep "UP"


oui, c'est bon ça ...
--
yt

Avatar
yvon.thoravalNO-SPAM
Julien Salort wrote:

On peut sans doute envisager :
ifconfig "en0" |grep "UP"


bon, je corrige le tir il y a un UP même si la connection n'est pas
active...


cable ethernet branché :

$ ifconfig en0
en0: flagsˆ63<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
inet6 fe80::20a:95ff:feb1:4f2e prefixlen 64 scopeid 0x4
inet 192.168.3.1 netmask 0xffffff00 broadcast 192.168.3.255
inet 81.57.96.20 netmask 0xffffff00 broadcast 81.57.96.255
ether 00:0a:95:b1:4f:2e
media: autoselect (100baseTX <full-duplex>) status: active
supported media: none autoselect 10baseT/UTP <half-duplex>
10baseT/UTP <full-duplex> 10baseT/UTP <full-duplex,hw-loopback>
100baseTX <half-duplex> 100baseTX <full-duplex> 100baseTX
<full-duplex,hw-loopback>

cable ethernet DÉ-branché :

$ ifconfig en0
en0: flagsˆ63<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
ether 00:0a:95:b1:4f:2e
media: autoselect (none) status: inactive
supported media: none autoselect 10baseT/UTP <half-duplex>
10baseT/UTP <full-duplex> 10baseT/UTP <full-duplex,hw-loopback>
100baseTX <half-duplex> 100baseTX <full-duplex> 100baseTX
<full-duplex,hw-loopback>

il faut donc tester "inactive", d'où le script :

#! /bin/sh
# script /usr/local/sbin/checkup

if [ -z "`ifconfig en0 | grep inactive`" ] && [ -n "`ps -ax | grep
MacSOUP`" ]; then
fetchnews -vvv
fi


sans l'argument -vvv °;)
--
yt

Avatar
ol.g+news
Yvon Thoraval wrote:

Donc, question, comment détecter la possibilité d'une connection, est-ce
possible sans en lancer une ?


Le seul moyen vraiment fiable et propre est à mon avis d'utiliser les
appels de 'reachability' du System Configuration framework. Il existe un
outil en ligne de commande qui wrappe l'appel, et qui est donc
utilisable facilement dans un script: scutil (utiliser l'option -r).

Ol.
--
Olivier Gutknecht

Avatar
yvon.thoravalNO-SPAM
Olivier Gutknecht <ol.g+ wrote:


Le seul moyen vraiment fiable et propre est à mon avis d'utiliser les
appels de 'reachability' du System Configuration framework. Il existe un
outil en ligne de commande qui wrappe l'appel, et qui est donc
utilisable facilement dans un script: scutil (utiliser l'option -r).


OK, merci, et donc, là, je suppose que ça fonctionne qqsoit le mode de
connection (ethernet, wifi, rtc, fw) ?

Mon petit script ne fonctionne que si la connection se fait par en0...

je viens de tester ça :

scutil -r 66.102.11.99 qui me donne :
Reachable

(66.102.11.99 = www.google.com)

qu'elle est l'adresse la plus pertinente ?
--
yt

Avatar
Olivier Croquette
Yvon Thoraval wrote:
Donc, question, comment détecter la possibilité d'une connection, est-ce
possible sans en lancer une ?


Pour changer, une approche (très très) pragmatique en shell (bash,ksh...):

if ping -c 1 www.google.com | grep "bytes from" >/dev/null 2>&1; then
echo OK; else echo KO; fi

--
Olivier

Avatar
DINH Viêt Hoà

scutil -r 66.102.11.99 qui me donne :
Reachable

(66.102.11.99 = www.google.com)

qu'elle est l'adresse la plus pertinente ?


le routeur le plus proche de ton fournisseur d'acces a internet.
cf traceroute, tu prends la premiere machine sur la route (qui ne soit
pas la tienne).

--
DINH V. Hoa,

"la chatte de ma petite soeur s'appelle Zoé" -- the captain de soirées

Avatar
ol.g+news
Olivier Croquette wrote:

if ping -c 1 www.google.com | grep "bytes from" >/dev/null 2>&1; then
echo OK; else echo KO; fi


Avec le défaut que si la machine est configurée en modem, connexion
automatique, ça fera monter la session PPP.

Ol.
--
Olivier Gutknecht

Avatar
yvon.thoravalNO-SPAM
Olivier Gutknecht <ol.g+ wrote:

Avec le défaut que si la machine est configurée en modem, connexion
automatique, ça fera monter la session PPP.


oui, oui, j'ai choisi ta solution avec scutil, elle est la seule, me
semble t'il, à obtenir ce que je recherchais quelque soit le type de
liaison internet...
--
yt