1
0
mirror of https://gitlab.com/JKANetwork/CheckServer.git synced 2026-02-22 04:54:06 +01:00

BSD Disks and Fix on Linux calculations of space

This commit is contained in:
2020-10-17 17:53:20 +02:00
parent 2e88377665
commit ee369fba6a

View File

@@ -149,12 +149,11 @@ function cron_status($db_conn,$time,$pc){
$resu = commandbyssh($pc['IP'],$pc['SSHPort'],$pc['User'],$pass,'sysctl hw.physmem');
$line = preg_replace("/[[:blank:]]+/",' ',$resu);
$part = explode(' ',$line);
//Mem: total used free shared buff/cache available
$detram = $part[1]; //Total RAM
$resu = commandbyssh($pc['IP'],$pc['SSHPort'],$pc['User'],$pass,'vmstat | grep -E \'([0-9]+\w+)+\' | awk \'{print $5}\'');
$line = preg_replace("/[[:blank:]]+/",' ',$resu);
$freeram = $line; //Free RAM
$freeram = $line*1024; //Free RAM (In Bytes)
break;
}
dbw_query($db_conn,"INSERT INTO S_HISTRAM (ID_SERV,`Timestamp`,Freeram,Detram) VALUES ('$pc[ID_SERV]','$time','$freeram','$detram')");
@@ -188,31 +187,33 @@ function cron_status($db_conn,$time,$pc){
$unidades[] = array ($part[0],$part[2],$part[1]);
}
}
}else{ //Systemd and init goes same way
}else if ($pc['SO'] == "BSD"){ //BSD "Standard" command df, not as GNU/Linux df one
$resu = commandbyssh($pc['IP'],$pc['SSHPort'],$pc['User'],$pass,'exec df -P -k -t notmpfs,devfs,fdescfs | tail -n+2');
$explines = preg_split('/[\r\n]+/', $resu);
foreach($explines as $line){
$line = preg_replace("/[[:blank:]]+/",' ',$line);
$part = explode(' ',$line);
//Filesystem 1024-blocks Used Avail Capacity Mounted on
if (isset($part[1])){
$unidades[] = array ($part[5],$part[1]*1024,$part[3]*1024);//Drive, Space, FreeSpace (*1024 because has to be in bytes)
}
}
}else{ //LINUX. Almost standard df
//I use exec for avoid alias that bash can have (Anarchy has a custom df alias for example)
$resu = commandbyssh($pc['IP'],$pc['SSHPort'],$pc['User'],$pass,'exec df -P -B1 --output=fstype,size,avail,target -x tmpfs -x udev -x devtmpfs | tail -n+2');
$resu = commandbyssh($pc['IP'],$pc['SSHPort'],$pc['User'],$pass,'exec df --output=source,size,used,avail,pcent,target -B1 -x tmpfs -x udev -x devtmpfs | tail -n+2');
if (strpos ($resu , 'df --help')){ //Esto suele pasar en redhat y centos porque No soportan --output Probamos alternativa que parece ser estandar en estos sistemas
if (strpos ($resu , 'df --help')){ //This can happen in some OS like redhat or centos because no support of --output. We try to use standard POSIX option
$resu = commandbyssh($pc['IP'],$pc['SSHPort'],$pc['User'],$pass,'exec df -P -B1 -x tmpfs -x udev -x devtmpfs | tail -n+2');
$explines = preg_split('/[\r\n]+/', $resu);
foreach($explines as $line){
$line = preg_replace("/[[:blank:]]+/",' ',$line);
$part = explode(' ',$line);
//S.ficheros Bloques de 1 Usado Dispon Ocupado Montado en
if (isset($part[1])){
$unidades[] = array ($part[5],$part[1],$part[3]);//Drive, Space, FreeSpace
}
}
}else{ //Si el comando acabó correctamente, todo estandar (Centos 6+, Debian, Ubuntu...)
$explines = preg_split('/[\r\n]+/', $resu);
foreach($explines as $line){
$line = preg_replace("/[[:blank:]]+/",' ',$line);
$part = explode(' ',$line);
//S.ficheros,Tamaño,Usado,Montado en
if (isset($part[1])){
$unidades[] = array ($part[3],$part[1],$part[2]);//Drive, Space, FreeSpace
}
}
}
$explines = preg_split('/[\r\n]+/', $resu);
foreach($explines as $line){
$line = preg_replace("/[[:blank:]]+/",' ',$line);
$part = explode(' ',$line);
//S.ficheros Bloques de 1 Usado Dispon Ocupado Montado en
if (isset($part[1])){
$unidades[] = array ($part[5],$part[1],$part[3]);//Drive, Space, FreeSpace
}
}
}