Informations :
Dates
- Publish : : Monday 19 february 2024
- 292 views
Share :
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 :
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
Puis en PHP je souhaite l'afficher ici :
Script avec 71 lignes
001<?php
002#---------------
003class tools () {
004 005 006public 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 014return $text;
015}
016017
public function uptime() {
018 019$text = null;
020021
$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>';
058059
return $text;
060061 062
}
063064 065
}
066 067$tools = new zw3btools();
068 069echo $tools→uptime();
070 071?>
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
C'est tout.
Bonne journée,
Romain.