ZW3B :-: API Client * Contents * Docs by LAB3W.ORJ

Translate this page

Name : BETA-TESTERS

Project name : ZW3B-API-BETA-TESTERS

Authorized. - 200 - Client API Name and Origin Wildcard OK

¿Comment? 'Ou' ¿Que faire?, Développement, PHP, Afficher l'uptime d'une machine Linux

Exemple pour afficher le retour de la commande "uptime" Linux sur une page web.

Author : O.Romain.Jaillet-ramey

Bonjour,

Je vous "post" une fonction que j'ai écrite, qui ne sert à rien.

Enfin, une fonction pour récupérer l'UPtime des machine pour l'afficher sur un site web qui ressemblera à cela :

Uptime Screenshot

Je créais un fichier avec le résultat de la commande "uptime" que je vais générer toutes les minutes :

Script avec 3 lignes

001$ uptime > /tmp/uptime.log
002$ cat /tmp/uptime.log
00315:11:01 up 182 days,  2:47,  2 users,  load average: 2,50, 1,55, 1,36
Retirer les numéros de lignes

Puis en PHP je souhaite l'afficher Couche IPv6 only (phase de dev)">ici :

Script avec 71 lignes

001<?php
002#---------------
003class tools () {
004
005
006    public function uptime_callback($value) {
007
008	$value[10] = isset($value[10]) && !empty($value[10] && preg_match('/:/', $value[10], $matches)) ? str_replace(':', 'h ', $value[10]).' min' : $value[10];
009	$value[14] = isset($value[14]) && !empty($value[14]) ? str_replace(':', 'h ', $value[14]).' min' : null;
010
011	//$text = $value[2].':'.$value[3].':'.$value[4].' :-: Stats :-: Server up → '.str_replace(':', 'h', $value[10]).' '.$value[12].' '.str_replace(':', 'h', $value[14]).' | '.$value[19].' | '.$value[21].' : '.$value[23].' (1 min) - '.$value[24].' (5 min) - '.$value[25].' (15 min)';
012	$text = $value[2].':'.$value[3].':'.$value[4].' :-: Stats :-: Server up → '.$value[10].' '.$value[12].' '.$value[14].' | '.$value[21].' : '.$value[23].' (1 min) - '.$value[24].' (5 min) - '.$value[25].' (15 min)';
013
014	return $text;
015    }
016    
017    public function uptime() {
018
019	$text = null;
020	
021	$uptime_file = file_get_contents('/tmp/uptime.log');
022
023	$uptime = trim($uptime_file);
024	$uptime___ = explode('average:', $uptime);
025
026	$uptime = $uptime___[0].' average:'.str_replace(array(',', '. '), array('.', ', '), $uptime___[1]);
027
028	$uptime = preg_replace_callback(
029	    '/'.
030	    '(([0-9]{2}):([0-9]{2}):([0-9]{2}))'. // current time : 1-4
031	    '([ ]+)(up)([ ]+)'. // : 5-7
032	    '((([a-zA-Z0-9 :]+)?[,]?)?)?'. // 2 days or hour:min : 8-10
033	    '([ ]+)?'. // : 11
034	    '(([0-9]+)? min)?'. // min only : 12-13
035	    '(([0-9]{1,2})?'. // hours  : 14-15
036	    '(:)?'. // : 16
037	    '([0-9]{2}+))?'. // min of hours : 14-17
038	    ',([ ]+)'. // 18
039	    '([0-9a-zA-Z ]+)'. // users : 19
040	    ',([ ]+)'. // 20
041	    '([a-zA-Z ]+)'. // load : 21
042	    '([:])'. // 22
043	    ''.
044	    ' ([0-9.]+),'. // 23
045	    ' ([0-9.]+),'. // 24
046	    ' ([0-9.]+)'. // 25
047	    '/',
048	    //'zw3bTools::uptime_callback', # vs php-7
049	    [$this->tools(), 'uptime_callback'], # vs php-8
050	    $uptime);
051
052
053	$uptime = date('M j').' '.$uptime;
054
055	$text.= '<div id="uptime">';
056	$text.= $uptime;
057	$text.= '</div>';
058	
059	return $text;
060	
061
062    }    
063    
064
065}
066
067$tools = new zw3btools();
068
069echo $tools->uptime();
070
071?>
Retirer les numéros de lignes

Je génére le fichier grâce à une table planifiée toutes les minutes.

Script avec 10 lignes

001$ crontab -l
002# +---------------- minute (0 - 59)
003# |  +------------- hour (0 - 23)
004# |  |  +---------- day of month (1 - 31)
005# |  |  |  +------- month (1 - 12)
006# |  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
007# |  |  |  |  |
008# *  *  *  *  *  command to be executed
009
010*/1 * * * * * * uptime > /tmp/uptime.log 1>>/var/log/syslog 2>/dev/null 2>&1
Retirer les numéros de lignes

C'est tout.

Bonne journée,

Romain.