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

Langage PHP Discussion :

Consulter les interfaces réseau en PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2016
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 95
    Par défaut Consulter les interfaces réseau en PHP
    Bonjour,

    Existe t'il une fonction PHP qui donne le volume du trafic entrant ou sortant d'une interface réseau ?
    Actuellement, j'utilise, ou, autrefois, Mais c'est lourd, il faut lancer la commande linux dans un shell, et désosser le résultat avec une regex.
    Et risqué: si ip a ou ifconfig changent la présentation de leur sortie.

    Tout comme la commande PHP filesize('nom_du_fichier') permet d'en connaître la taille,
    sans devoir passer par un shell_exec('ls -l '.$nom_du_fichier), dont on désosserait la sortie par une regex.


    Voilà ce que je voudrais obtenir, directement par une fonction PHP, si elle existe
    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
    45
    46
    47
    48
    49
    christian@jupiter:~$ ip -s -c -h a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
        RX: bytes  packets  errors  dropped overrun mcast   
        447k       3.75k    0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        447k       3.75k    0       0       0       0       
    2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 4c:cc:6a:d8:61:19 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic enp0s31f6
           valid_lft 82663sec preferred_lft 82663sec
        inet6 fdf0:fec:7e22:b900:e4ff:53ce:f186:9afc/64 scope global temporary dynamic 
           valid_lft 7040sec preferred_lft 3440sec
        inet6 fdf0:fec:7e22:b900:59c2:42ce:f00d:b00e/64 scope global mngtmpaddr noprefixroute dynamic 
           valid_lft 7040sec preferred_lft 3440sec
        inet6 fe80::c00c:3cdc:87a1:21cb/64 scope link 
           valid_lft forever preferred_lft forever
        RX: bytes  packets  errors  dropped overrun mcast   
        34.7M      35.4k    0       0       0       15      
        TX: bytes  packets  errors  dropped carrier collsns 
        3.24M      25.2k    0       0       0       0       
    christian@jupiter:~$ ifconfig
    enp0s31f6 Link encap:Ethernet  HWaddr 4c:cc:6a:d8:61:19  
              inet adr:192.168.1.100  Bcast:192.168.1.255  Masque:255.255.255.0
              adr inet6: fdf0:fec:7e22:b900:59c2:42ce:f00d:b00e/64 Scope:Global
              adr inet6: fdf0:fec:7e22:b900:e4ff:53ce:f186:9afc/64 Scope:Global
              adr inet6: fe80::c00c:3cdc:87a1:21cb/64 Scope:Lien
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              Packets reçus:35385 erreurs:0 :0 overruns:0 frame:0
              TX packets:25179 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 lg file transmission:1000 
              Octets reçus:34716008 (34.7 MB) Octets transmis:3235948 (3.2 MB)
              Interruption:16 Mémoire:df100000-df120000 
    
    lo        Link encap:Boucle locale  
              inet adr:127.0.0.1  Masque:255.0.0.0
              adr inet6: ::1/128 Scope:Hôte
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              Packets reçus:3751 erreurs:0 :0 overruns:0 frame:0
              TX packets:3751 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 lg file transmission:1000 
              Octets reçus:447343 (447.3 KB) Octets transmis:447343 (447.3 KB)
    
    christian@jupiter:~$
    Pour la loopback localhost, avec une variable, j'ai assez, puisque le volume entrant de la boucle locale est identique au volume sortant.
    Puisque PHP peut directement consulter la taille d'un fichier, sans passer par un shell, pourrait-il relever le compteur de mes interfaces réseaux ?
    Merci,
    Christian.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2016
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 95
    Par défaut Le compteur est un fichier
    J'ai poursuivi mes recherches, après post du message précédent.
    En faisant
    cd /sys/class/net
    On trouve la liste des interfaces réseau.
    A mon avis, c'est là que ifconfig et ip a vont chercher leurs données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    christian@jupiter:/sys/class/net$ ls -lan /sys/class/net/
    total 0
    drwxr-xr-x  2 0 0 0 oct 13 22:03 .
    drwxr-xr-x 66 0 0 0 oct 13 22:03 ..
    lrwxrwxrwx  1 0 0 0 oct 13 22:03 enp0s31f6 -> ../../devices/pci0000:00/0000:00:1f.6/net/enp0s31f6
    lrwxrwxrwx  1 0 0 0 oct 13 22:03 lo -> ../../devices/virtual/net/lo
    christian@jupiter:/sys/class/net$
    Dans lesquels on trouve un répertoire statistics
    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
     
    christian@jupiter:/sys/class/net$ cd /sys/class/net/enp0s31f6/statistics/
    christian@jupiter:/sys/class/net/enp0s31f6/statistics$ ls -lan
    total 0
    drwxr-xr-x 2 0 0    0 oct 13 22:04 .
    drwxr-xr-x 5 0 0    0 oct 13 22:04 ..
    -r--r--r-- 1 0 0 4096 oct 13 22:05 collisions
    -r--r--r-- 1 0 0 4096 oct 13 22:05 multicast
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_bytes
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_compressed
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_crc_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_dropped
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_fifo_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_frame_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_length_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_missed_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_nohandler
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_over_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 rx_packets
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_aborted_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_bytes
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_carrier_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_compressed
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_dropped
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_fifo_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_heartbeat_errors
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_packets
    -r--r--r-- 1 0 0 4096 oct 13 22:05 tx_window_errors
    christian@jupiter:/sys/class/net/enp0s31f6/statistics$ cat /sys/class/net/enp0s31f6/statistics/rx_bytes 
    99437661
    christian@jupiter:/sys/class/net/enp0s31f6/statistics$
    Les fichiers rx_bytes et tx_bytes contiennent les compteurs de trafic entrant et sortant de l'interface
    En PHP, on devrait pouvoir les consulter, d'un simple $tx_bytes = (int)`cat /sys/class/net/enp0s31f6/statistics/tx_bytes`
    En s'assurant, au préalable, du nom de l'interface, qui s'appelait autrefois eth0, en analysant le retour de ls -lan /sys/class/net
    Bien à vous.
    Christian.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    En PHP tu n'auras pas beaucoup d'autre solution que de parser la sortie de ifconfig (avec le risque ca change) ou parser le bon fichier system (avec le risque que ca change selon l'os).

    Peut être qu'il est possible de récupérer des infos via l'extension snmp de PHP qui pour le coup serait peut être plus standard que tout ca.
    Par contre ca implique de connaitre un minimum snmp ce qui n'est pas forcément une partie de plaisir de mémoire
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [POO] A quoi servent les interfaces en php ?
    Par eilijah dans le forum Langage
    Réponses: 6
    Dernier message: 07/11/2013, 12h16
  2. Réponses: 7
    Dernier message: 13/12/2011, 13h47
  3. Réponses: 3
    Dernier message: 03/11/2009, 17h55
  4. Centos lister les interface réseau
    Par morgan47 dans le forum Linux
    Réponses: 7
    Dernier message: 24/10/2009, 21h02
  5. OCaml, le réseau et les interfaces graphiques
    Par _SamSoft_ dans le forum Caml
    Réponses: 24
    Dernier message: 07/05/2008, 12h22

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