1 votes

Comment faire: Continuer à exécuter le script uniquement lorsque le réseau (connexion Internet) est inactif?

J'ai un script (en fait, une application Rails avec un système de file d'attente de tâches Sidekiq), qui télécharge des photos et des albums sur Flickr. Ces données sont énormes pour mes besoins (environ 100 Go), et le téléchargement est lent en raison de ma faible vitesse internet.

J'ai déjà configuré le script pour s'exécuter au démarrage d'Ubuntu, ainsi que pour avoir une interface init.d pour contrôler ce script.

Maintenant, comme le téléchargement consomme toute ma bande passante, je veux exécuter ce script uniquement lorsque la connexion internet est inutilisée, c'est-à-dire que le script doit se mettre en pause automatiquement lorsque la connexion internet est utilisée par d'autres applications, et reprendre une fois qu'elle redevient inactive.

Donc, j'aimerais savoir s'il existe un moyen de surveiller ma connexion internet et de vérifier si d'autres applications sont connectées en ligne. Si c'est le cas, le script se met en pause et reprend lorsque la connexion redevient inactive.

Toute indication ou aide à ce sujet est appréciée.

0voto

DaveHowes Points 3597

Vous pouvez utiliser /proc/net/dev pour surveiller l'activité du réseau, quelque chose comme ceci :

paquets() {
    # Obtenir le nombre de paquets du périphérique eth0
    cat /proc/net/dev | grep eth0 | cut -f5 -d' ';
}

DERNIER=$(paquets)

while [ true ]; do
    sleep 1;
    PAQUETS=$(paquets)
    DIFF=$(($PAQUETS-$DERNIER));
    # Je considère un état d'inactivité à moins de 10 paquets par seconde
    if [ $DIFF -le 10 ]; then
        echo 'Inactif !';
    fi
    DERNIER=$PAQUETS;
done

Le truc ici est de définir ce que vous considérez comme inactif, car un trafic nul est une impossibilité dans le monde réel :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X