Спасибо большое за код, немного изменил под светлый фонVovix писал(а):а у меня так выводиться:
[Модуль] SystemInfo (sysinfo)
Модератор: immortal
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Re: Модуль SystemInfo
- Вложения
-
- Clip2net_180125214910.png (14.3 КБ) 4632 просмотра
Последний раз редактировалось webms Чт янв 25, 2018 9:50 pm, всего редактировалось 1 раз.
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль SystemInfo
Установил модуль...
Во-первых конечно же спасибо))давно статы хотел подбирать с разбери, да всё лень было команды искать...а тут модуль такой подъехал))) даже в коннекте поддержу, как только закончу писать))
Во-вторых можно просьбу немножечко доработать? (всё что говорить буду - касается линукса)
1) во первых запрос параметров
Рекомендую запрашивать сразу данные. Т.е. сейчас вы запрашиваете, к примеру, для памяти $fh = fopen('/proc/meminfo', 'r');, там выдаётся портянка, которая грузится в оперативу и парсится по средствам php, ещё и построчно...нагружает проц, жрет оперативу...хоть чуть чуть, но всё же...около 9 секунд идёт обновление всех параметров. Крайне рекомендую сразу обрезать запрос...например
сразу возвращает нужную строку
2) Прошу добавить настройки единиц измерения. Как минимум для свободного места, чтобы пользователям свой код не городить...к примеру - оперативу выводим в МБ, свободное место на диске в Гб...
3) В каких единицах выдаётся cpuload? У меня там 4.8478260869565...херня какая-то если честно)))
Лично я забирал так
/proc/loadavg выдаёт среднюю загрузку за 1 сек, 5 сек и 15 сек...я как раз брал за 5 сек. Выдаёт в десятых долях (0,34 к примеру, по-этому умножал на 100, для показаний в %), но тоже не совсем корректно, т.к. иногда подскакивало выше 1. Может как раз сигнализировало о перегрузках...я хз....но это самое адекватное отображение, которое нашел.
4) Прошу добавить температуру проца
Спасибо за модуль =).
Во-первых конечно же спасибо))давно статы хотел подбирать с разбери, да всё лень было команды искать...а тут модуль такой подъехал))) даже в коннекте поддержу, как только закончу писать))
Во-вторых можно просьбу немножечко доработать? (всё что говорить буду - касается линукса)
1) во первых запрос параметров
Рекомендую запрашивать сразу данные. Т.е. сейчас вы запрашиваете, к примеру, для памяти $fh = fopen('/proc/meminfo', 'r');, там выдаётся портянка, которая грузится в оперативу и парсится по средствам php, ещё и построчно...нагружает проц, жрет оперативу...хоть чуть чуть, но всё же...около 9 секунд идёт обновление всех параметров. Крайне рекомендую сразу обрезать запрос...например
Код: Выделить всё
$fh = exec('cat /proc/meminfo | grep MemTotal');
и ничего лишнего.MemTotal: 949580 kB
2) Прошу добавить настройки единиц измерения. Как минимум для свободного места, чтобы пользователям свой код не городить...к примеру - оперативу выводим в МБ, свободное место на диске в Гб...
3) В каких единицах выдаётся cpuload? У меня там 4.8478260869565...херня какая-то если честно)))
Лично я забирал так
Код: Выделить всё
$loadavg=explode(' ', exec('cat /proc/loadavg'));
sg('server.cpuload', $loadavg[1]*100,0);
4) Прошу добавить температуру проца
Код: Выделить всё
$temp=exec('cat /sys/class/thermal/thermal_zone0/temp')/1000;
sg('server.cputemp', round($temp,0));
Последний раз редактировалось nick7zmail Чт янв 25, 2018 6:11 pm, всего редактировалось 2 раза.
- За это сообщение автора nick7zmail поблагодарили (всего 3):
- directman66 (Пт янв 26, 2018 11:37 am) • chimik (Вс фев 18, 2018 9:25 pm) • Samir77 (Вс май 13, 2018 9:54 pm)
- Рейтинг: 3.49%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Модуль SystemInfo
Вот эта штука очень специфична и будет разная на разных платформах.nick7zmail писал(а):4) Прошу добавить температуру процаКод: Выделить всё
$temp=exec('cat /sys/class/thermal/thermal_zone0/temp')/1000; sg('server.cputemp', round($temp,0));
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль SystemInfo
Тогда в настройки путь запроса вывести....либо при установке модуль проводить что то типа find /sys | grep thermal_zone , и результат сохранять.
А лучше и то и другое сделать...
Как вариант - можно все temp находить, и все температуры сохранять...тоже кстати неплохой вариант...
А лучше и то и другое сделать...
Как вариант - можно все temp находить, и все температуры сохранять...тоже кстати неплохой вариант...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 869 раз
- Контактная информация:
Re: Модуль SystemInfo
да, у меня не заработалоskysilver писал(а):Вот эта штука очень специфична и будет разная на разных платформах.nick7zmail писал(а):4) Прошу добавить температуру процаКод: Выделить всё
$temp=exec('cat /sys/class/thermal/thermal_zone0/temp')/1000; sg('server.cputemp', round($temp,0));
а еще хотелось бы и температуру HDD
не простая задача, с windows еще сложнее, без сторонних программ не обойтись
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль SystemInfo
Выполните find /sys | grep temp, покажет все доступные датчики температуры.
С виндой - согласен...я про wmiс то не знал)) только через ohw думал можно...но для линукса забирается просто...хотелось бы видеть в ближайших обновлениях...и да...локализацию бы какую нить)) название модуля на языки перевести, и как минимум аптайм. Либо аптайм можно в юникс-формате сохранить...пусть кто как хочет интерпретирует))...
В процентах занятая память, и занятое дисковое пространство не помешало бы...чтобы напрямую в элементы меню можно бы было выводить.
С виндой - согласен...я про wmiс то не знал)) только через ohw думал можно...но для линукса забирается просто...хотелось бы видеть в ближайших обновлениях...и да...локализацию бы какую нить)) название модуля на языки перевести, и как минимум аптайм. Либо аптайм можно в юникс-формате сохранить...пусть кто как хочет интерпретирует))...
В процентах занятая память, и занятое дисковое пространство не помешало бы...чтобы напрямую в элементы меню можно бы было выводить.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Модуль SystemInfo
Для линукса мало параметров возвращает.
Ниже список запросов, которые опрашиваются у меня.
Можно добавить их? Например указать параметры и периодичность было бы не лишним.
И кастомный бы еще параметр сделать.
раз в минуту
раз в час:
Ниже список запросов, которые опрашиваются у меня.
Можно добавить их? Например указать параметры и периодичность было бы не лишним.
И кастомный бы еще параметр сделать.
раз в минуту
СпойлерПоказать
//raspberrypi
if (gg('mdsensors.chip')=='Hardware : BCM2835')
{
exec("sensors",$asensors);
for($i=0;$i<count($asensors);$i++) {
ereg("[^:]*\:[ ]*([0-9+-.]*)",$asensors[$i],$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
switch (substr($asensors[$i],0,5)) {
case 'fan1:':
sg('system_fan1',$temp);
break;
case 'temp1':
sg('system_temp1',$temp);
break;
case 'temp3':
sg('system_temp3',$temp);
break;
case 'M/B T':
sg('system_mbtemp',$temp);
break;
};};
//$temp=exec("\/usr\/sbin\/hddtemp \/dev\/sda1");
//ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$temp,$arr);
//$temp = trim($arr[1]);
//$temp = str_replace('+','',$temp);
//sg('mdsensors.hddtemp',$temp);
$data = shell_exec('vcgencmd measure_temp');
sg('mdsensors.systemp',str_replace('\'C','', substr($data,5)));
$data = shell_exec('vcgencmd measure_volts core');
$data =explode('=',trim($data));
sg('mdsensors.kernellvcc',substr($data[1],0,-1));
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq');
sg('mdsensors.freqcur',trim($data));
}
///orangepi
else if (gg('mdsensors.chip')=='Hardware : sun8i')
{
$data = shell_exec(' cat /etc/armbianmonitor/datasources/soctemp');
sg('mdsensors.systemp',trim($data));
$data = shell_exec(' cat /sys/devices/virtual/thermal/thermal_zone0/temp');
sg('system_temp1',$temp);
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq');
sg('mdsensors.freqcur',trim($data));
}
///for all system
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('mdsensors.cpuusage',trim($uptime[3]));
$data = shell_exec('cat /proc/cpuinfo |grep BogoMIPS');
sg('mdsensors.bogomips',trim($data));
$bogomips=explode("\n", $data);
sg('mdsensors.bogomips1',str_replace('BogoMIPS : ','',$bogomips[0]));
sg('mdsensors.bogomips2',str_replace('BogoMIPS : ','',$bogomips[1]));
sg('mdsensors.bogomips3',str_replace('BogoMIPS : ','',$bogomips[2]));
sg('mdsensors.bogomips4',str_replace('BogoMIPS : ','',$bogomips[3]));
if (gg('mdsensors.chip')=='Hardware : BCM2835')
{
exec("sensors",$asensors);
for($i=0;$i<count($asensors);$i++) {
ereg("[^:]*\:[ ]*([0-9+-.]*)",$asensors[$i],$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
switch (substr($asensors[$i],0,5)) {
case 'fan1:':
sg('system_fan1',$temp);
break;
case 'temp1':
sg('system_temp1',$temp);
break;
case 'temp3':
sg('system_temp3',$temp);
break;
case 'M/B T':
sg('system_mbtemp',$temp);
break;
};};
//$temp=exec("\/usr\/sbin\/hddtemp \/dev\/sda1");
//ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$temp,$arr);
//$temp = trim($arr[1]);
//$temp = str_replace('+','',$temp);
//sg('mdsensors.hddtemp',$temp);
$data = shell_exec('vcgencmd measure_temp');
sg('mdsensors.systemp',str_replace('\'C','', substr($data,5)));
$data = shell_exec('vcgencmd measure_volts core');
$data =explode('=',trim($data));
sg('mdsensors.kernellvcc',substr($data[1],0,-1));
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq');
sg('mdsensors.freqcur',trim($data));
}
///orangepi
else if (gg('mdsensors.chip')=='Hardware : sun8i')
{
$data = shell_exec(' cat /etc/armbianmonitor/datasources/soctemp');
sg('mdsensors.systemp',trim($data));
$data = shell_exec(' cat /sys/devices/virtual/thermal/thermal_zone0/temp');
sg('system_temp1',$temp);
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq');
sg('mdsensors.freqcur',trim($data));
}
///for all system
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('mdsensors.cpuusage',trim($uptime[3]));
$data = shell_exec('cat /proc/cpuinfo |grep BogoMIPS');
sg('mdsensors.bogomips',trim($data));
$bogomips=explode("\n", $data);
sg('mdsensors.bogomips1',str_replace('BogoMIPS : ','',$bogomips[0]));
sg('mdsensors.bogomips2',str_replace('BogoMIPS : ','',$bogomips[1]));
sg('mdsensors.bogomips3',str_replace('BogoMIPS : ','',$bogomips[2]));
sg('mdsensors.bogomips4',str_replace('BogoMIPS : ','',$bogomips[3]));
СпойлерПоказать
exec("sensors",$asensors);
for($i=0;$i<count($asensors);$i++) {
ereg("[^:]*\:[ ]*([0-9+-.]*)",$asensors[$i],$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
switch (substr($asensors[$i],0,5)) {
case 'fan1:':
sg('system_fan1',$temp);
break;
case 'temp1':
sg('system_temp1',$temp);
break;
case 'temp3':
sg('system_temp3',$temp);
break;
case 'M/B T':
sg('system_mbtemp',$temp);
break;
};
};
//$temp=exec("\/usr\/sbin\/hddtemp \/dev\/sda1");
//ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$temp,$arr);
//$temp = trim($arr[1]);
//$temp = str_replace('+','',$temp);
//sg('mdsensors.hddtemp',$temp);
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('mdsensors.uptime',trim($uptime[0]));
$bytes = disk_free_space(".");
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('mdsensors.freespace',$temp);
$data = shell_exec('vcgencmd measure_temp');
sg('mdsensors.systemp',str_replace('\'C','', substr($data,5)));
$data = shell_exec('uname -r');
sg('mdsensors.kernell',trim($data));
$data = shell_exec('cat /proc/cpuinfo |grep Hardware');
sg('mdsensors.chip',trim($data));
$data = shell_exec('cat /proc/cpuinfo |grep BogoMIPS');
sg('mdsensors.bogomips',trim($data));
$bogomips=explode("\n", $data);
sg('mdsensors.bogomips1',str_replace('BogoMIPS : ','',$bogomips[0]));
sg('mdsensors.bogomips2',str_replace('BogoMIPS : ','',$bogomips[1]));
sg('mdsensors.bogomips3',str_replace('BogoMIPS : ','',$bogomips[2]));
sg('mdsensors.bogomips4',str_replace('BogoMIPS : ','',$bogomips[3]));
$data = shell_exec('df');
sg('mdsensors.diskfree',trim($data));
$data = shell_exec('free');
sg('mdsensors.free',trim($data));
$data = shell_exec('cat /proc/version');
sg('mdsensors.os',trim($data));
$data = shell_exec('df |grep /dev/root');
sg('mdsensors.dfall',trim($data));
$data2 = explode(' ',trim(str_replace('/dev/root', '',$data)));
$data3 = mb_split ('\s{1,}',trim(str_replace('/dev/root', '',$data)));
sg('mdsensors.dfsize',$data2[0]);
sg('mdsensors.dfused',$data2[1]);
sg('mdsensors.dfaviable',$data3[2]);
$proc=explode('%',$data);
sg('mdsensors.dfproc',trim(substr($proc[0],-3)));
$data = trim(shell_exec('free |grep Mem'));
$data2 = trim(str_replace('Mem:', '',$data));
#$data3 = explode(' ',$data2);
$data3 = mb_split ('\s{1,}',$data2);
sg('mdsensors.freetotal',$data3[0]);
sg('mdsensors.freeused',$data3[1]);
sg('mdsensors.freefree',$data3[2]);
$data = shell_exec('vcgencmd get_mem arm');
sg('mdsensors.getmemcpu',trim($data));
$data = shell_exec('vcgencmd get_mem gpu');
sg('mdsensors.getmemgpu',trim($data));
$data = shell_exec('lsusb');
sg('mdsensors.lsusb',trim($data));
$data = shell_exec('vcgencmd measure_volts core');
$data =explode('=',trim($data));
sg('mdsensors.kernellvcc',substr($data[1],0,-1));
$data = shell_exec('vcgencmd codec_enabled CODECNAME ');
sg('mdsensors.codecs',trim($data));
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq');
sg('mdsensors.freqcur',trim($data));
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq');
sg('mdsensors.freqmin',trim($data));
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq');
sg('mdsensors.freqmax',trim($data));
$data = shell_exec('ps -x');
sg('mdsensors.ps',trim($data));
//снапшоты
//$data = shell_exec('mdir webcam/tmpjpg/');
$url = 'http://192.168.1.33/webcapture.jpg?comm ... &channel=0';
//$path = '/home/pi/webcam/cam1.jpg';
$path = '/var/www/webcam/tmpjpg/cam1.jpg';
file_put_contents($path, file_get_contents($url));
$url = 'http://192.168.1.32/webcapture.jpg?comm ... &channel=0';
//$path = '/home/pi/webcam/cam2.jpg';
$path = '/var/www/webcam/tmpjpg/cam2.jpg';
file_put_contents($path, file_get_contents($url));
for($i=0;$i<count($asensors);$i++) {
ereg("[^:]*\:[ ]*([0-9+-.]*)",$asensors[$i],$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
switch (substr($asensors[$i],0,5)) {
case 'fan1:':
sg('system_fan1',$temp);
break;
case 'temp1':
sg('system_temp1',$temp);
break;
case 'temp3':
sg('system_temp3',$temp);
break;
case 'M/B T':
sg('system_mbtemp',$temp);
break;
};
};
//$temp=exec("\/usr\/sbin\/hddtemp \/dev\/sda1");
//ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$temp,$arr);
//$temp = trim($arr[1]);
//$temp = str_replace('+','',$temp);
//sg('mdsensors.hddtemp',$temp);
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('mdsensors.uptime',trim($uptime[0]));
$bytes = disk_free_space(".");
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('mdsensors.freespace',$temp);
$data = shell_exec('vcgencmd measure_temp');
sg('mdsensors.systemp',str_replace('\'C','', substr($data,5)));
$data = shell_exec('uname -r');
sg('mdsensors.kernell',trim($data));
$data = shell_exec('cat /proc/cpuinfo |grep Hardware');
sg('mdsensors.chip',trim($data));
$data = shell_exec('cat /proc/cpuinfo |grep BogoMIPS');
sg('mdsensors.bogomips',trim($data));
$bogomips=explode("\n", $data);
sg('mdsensors.bogomips1',str_replace('BogoMIPS : ','',$bogomips[0]));
sg('mdsensors.bogomips2',str_replace('BogoMIPS : ','',$bogomips[1]));
sg('mdsensors.bogomips3',str_replace('BogoMIPS : ','',$bogomips[2]));
sg('mdsensors.bogomips4',str_replace('BogoMIPS : ','',$bogomips[3]));
$data = shell_exec('df');
sg('mdsensors.diskfree',trim($data));
$data = shell_exec('free');
sg('mdsensors.free',trim($data));
$data = shell_exec('cat /proc/version');
sg('mdsensors.os',trim($data));
$data = shell_exec('df |grep /dev/root');
sg('mdsensors.dfall',trim($data));
$data2 = explode(' ',trim(str_replace('/dev/root', '',$data)));
$data3 = mb_split ('\s{1,}',trim(str_replace('/dev/root', '',$data)));
sg('mdsensors.dfsize',$data2[0]);
sg('mdsensors.dfused',$data2[1]);
sg('mdsensors.dfaviable',$data3[2]);
$proc=explode('%',$data);
sg('mdsensors.dfproc',trim(substr($proc[0],-3)));
$data = trim(shell_exec('free |grep Mem'));
$data2 = trim(str_replace('Mem:', '',$data));
#$data3 = explode(' ',$data2);
$data3 = mb_split ('\s{1,}',$data2);
sg('mdsensors.freetotal',$data3[0]);
sg('mdsensors.freeused',$data3[1]);
sg('mdsensors.freefree',$data3[2]);
$data = shell_exec('vcgencmd get_mem arm');
sg('mdsensors.getmemcpu',trim($data));
$data = shell_exec('vcgencmd get_mem gpu');
sg('mdsensors.getmemgpu',trim($data));
$data = shell_exec('lsusb');
sg('mdsensors.lsusb',trim($data));
$data = shell_exec('vcgencmd measure_volts core');
$data =explode('=',trim($data));
sg('mdsensors.kernellvcc',substr($data[1],0,-1));
$data = shell_exec('vcgencmd codec_enabled CODECNAME ');
sg('mdsensors.codecs',trim($data));
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq');
sg('mdsensors.freqcur',trim($data));
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq');
sg('mdsensors.freqmin',trim($data));
$data = shell_exec('cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq');
sg('mdsensors.freqmax',trim($data));
$data = shell_exec('ps -x');
sg('mdsensors.ps',trim($data));
//снапшоты
//$data = shell_exec('mdir webcam/tmpjpg/');
$url = 'http://192.168.1.33/webcapture.jpg?comm ... &channel=0';
//$path = '/home/pi/webcam/cam1.jpg';
$path = '/var/www/webcam/tmpjpg/cam1.jpg';
file_put_contents($path, file_get_contents($url));
$url = 'http://192.168.1.32/webcapture.jpg?comm ... &channel=0';
//$path = '/home/pi/webcam/cam2.jpg';
$path = '/var/www/webcam/tmpjpg/cam2.jpg';
file_put_contents($path, file_get_contents($url));
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Модуль SystemInfo
Eraser писал(а):да, у меня не заработалоskysilver писал(а):Вот эта штука очень специфична и будет разная на разных платформах.nick7zmail писал(а):4) Прошу добавить температуру процаКод: Выделить всё
$temp=exec('cat /sys/class/thermal/thermal_zone0/temp')/1000; sg('server.cputemp', round($temp,0));
а еще хотелось бы и температуру HDD
не простая задача, с windows еще сложнее, без сторонних программ не обойтись
Для виндовса смарт винтов можно забирать штатными методами через WSH. Но наверно это уже затратно по времени, хотя впринципе реализуемо.
В смарт хранится текущаяа температура HDD!
СпойлерПоказать
[/
Код: Выделить всё
'==========================================================================
'
' AUTHOR: Леонид_33
' NAME: HDD_Smart.vbs
'
' Скрипт для получения SMARTа HDD
' Может брать SMART как с локальной так и удаленной машины с выводом результата в файл в формате CSV
' При запуске скрипта выдается окно ввода имени(IP) машины с учетными данными
' Если хотим получить SMART с локальной машины, то ничего не указываем, если с удаленной, указываем имя(IP) машины, и, если надо, учетные данные
' Работает на WindowsXP(SP2,SP3), Windows2003SP2, Windows2008SP1
' Берет SMART через WMI, поэтому, что винда отдает, то отдает т.е.
' работает только со стандартно подключенными на мать HDD IDE и SATA
' Как бы того не хотелось, НЕ РАБОТАЕТ с рэйдами.
' Ну не видит винда SMARTов с этих винтов и все тут.
'
' Если что по атрибутам неясно, можно глянуть тут
' http://en.wikipedia.org/wiki/Self-Monitoring%2C_Analysis%2C_and_Reporting_Technology
'
'==========================================================================
Dim strComputer
Dim strLogin
Dim strPassword
On Error Resume Next
GetPassword()
If strLogin = "" or strComputer = "." then
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")
else
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _
"root\CIMV2", _
strLogin, _
strPassword, _
"MS_409")
end If
Set SmartDataItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictData", "WQL", 48)
InstanceName = Array()
SmartData = Array()
SmartLength = Array()
RowCount = 0
For Each objItem In SmartDataItems
Redim Preserve InstanceName(RowCount)
InstanceName(RowCount) = objItem.InstanceName
Redim Preserve SmartData(RowCount)
SmartData(RowCount) = objItem.VendorSpecific
Redim Preserve SmartLength(RowCount)
SmartLength(RowCount) = objItem.Length
RowCount = RowCount + 1
Next
Set SmartDataItems = Nothing
ThresholdData = Array()
Redim Preserve ThresholdData(RowCount)
PredictFailure = Array()
Redim Preserve PredictFailure(RowCount)
Reason = Array()
Redim Preserve Reason(RowCount)
RowCount = 0
Set ThresholdItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictThresholds", "WQL", 48)
For Each objItem In ThresholdItems
ThresholdData(RowCount) = objItem.VendorSpecific
RowCount = RowCount + 1
Next
Set ThresholdItems = Nothing
RowCount = 0
Set PredictStatusItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictStatus", "WQL", 48)
For Each objItem In PredictStatusItems
PredictFailure(RowCount) = objItem.PredictFailure
Reason(RowCount) = objItem.Reason
RowCount = RowCount + 1
Next
Set PredictStatusItems = Nothing
Set oDict = CreateObject("Scripting.Dictionary")
CreateDict(oDict)
Set objFSO = CreateObject("Scripting.FileSystemObject")
If strComputer = "." then
Set objTextFile = objFSO.OpenTextFile("C:\Documents and Settings\SSTAuto1\My Documents\EJCONFIG\smart.csv", 2, True)
else
Set objTextFile = objFSO.OpenTextFile("HDD_Smart_" & strComputer & ".csv", 2, True)
end If
For CurrentDisk = 0 to RowCount - 1
objTextFile.WriteLine("Drive: " & Replace(Mid(InstanceName(CurrentDisk), 9, InStr(InstanceName(CurrentDisk), "__") - 9), "_", " "))
objTextFile.WriteLine("PredictFailure: " & PredictFailure(CurrentDisk))
objTextFile.WriteLine("Reason: " & Reason(CurrentDisk))
objTextFile.WriteLine(" ID; Attribute ; Type ;Flag ;Threshold ;Value ;Worst ;Raw ;Status;")
aSmartData = SmartData(CurrentDisk)
aThresholdData = ThresholdData(CurrentDisk)
If IsArray(aSmartData) AND IsArray(aThresholdData) Then
LastID = 0
For x = 2 To SmartLength(CurrentDisk) + 2 Step 12
If LastID > aSmartData(x) then
x = 514
else
LastID = aSmartData(x)
If aSmartData(x) <> 0 Then
objTextFile.Write(aSmartData(x) & ";")
If oDict.Item(aSmartData(x)) = "" Then
objTextFile.Write("VendorSpecific(" & aSmartData(x) & ");")
else
objTextFile.Write(oDict.Item(aSmartData(x)) & ";")
end If
If aSmartData(x + 1) MOD 2 Then
objTextFile.Write(" Pre-Failure;")
Else
objTextFile.Write(" Advisory ;")
End If
' objTextFile.Write(aSmartData(x + 1) & ";")
aFlag = aSmartData(x + 1)
txtFlag = ""
If (aFlag And &H1) <> 0 Then txtFlag = "LC," End If
If (aFlag And &H2) <> 0 Then txtFlag = txtFlag & "OC," End If
If (aFlag And &H4) <> 0 Then txtFlag = txtFlag & "PR," End If
If (aFlag And &H8) <> 0 Then txtFlag = txtFlag & "ER," End If
If (aFlag And &H10) <> 0 Then txtFlag = txtFlag & "EC," End If
If (aFlag And &H20) <> 0 Then txtFlag = txtFlag & "SP," End If
If txtFlag <> "" then
txtFlag = Left(txtFlag, Len(txtFlag)-1 )
end If
objTextFile.Write txtFlag & " ;"
objTextFile.Write(aThresholdData(x + 1) & " ;") 'Threshold
objTextFile.Write(aSmartData(x + 3) & " ;") 'Value
objTextFile.Write(aSmartData(x + 4) & " ;") 'Worst
objTextFile.Write((aSmartData(x + 8) * 65536 + aSmartData(x + 7) * 4096 + aSmartData(x + 6) * 256 + aSmartData(x + 5)) & " ;") 'Raw
If aSmartData(x + 3) >= aThresholdData(x + 1) Then
objTextFile.WriteLine(" OK;")
else
objTextFile.WriteLine(" NOT OK;")
end If
end If
end If
Next
else
objTextFile.WriteLine("NO DRIVE WITH SMART FOUND;")
end If
objTextFile.WriteLine
Next
objTextFile.WriteLine
objTextFile.WriteLine("LC - life critical;")
objTextFile.WriteLine("OC - online collection;")
objTextFile.WriteLine("PR - performance related;")
objTextFile.WriteLine("ER - error rate;")
objTextFile.WriteLine("EC - event count;")
objTextFile.WriteLine("SP - self preserving;")
objTextFile.Close
' Wscript.echo "HDD_SMART Is Done!"
Function CreateDict(oDict)
oDict.Add 1, "Raw Read Error Rate "
oDict.Add 2, "Throughput Performance"
oDict.Add 3, "Spin-Up Time "
oDict.Add 4, "Start/Stop Count "
oDict.Add 5, "Reallocated Sectors Co"
oDict.Add 6, "Read Channel Margin "
oDict.Add 7, "Seek Error Rate Rate "
oDict.Add 8, "Seek Time Performance "
oDict.Add 9, "Power-On Hours (POH) "
oDict.Add 10, "Spin Retry Count "
oDict.Add 11, "Recalibration Retries"
oDict.Add 12, "Device Power Cycle Co"
oDict.Add 13, "Soft Read Error Rate "
oDict.Add 190, "HDA Temperature "
oDict.Add 191, "G-Sense Error Rate F"
oDict.Add 192, "Power-Off Park Count"
oDict.Add 193, "Load/Unload Cycle Co"
oDict.Add 194, "HDA Temperature "
oDict.Add 195, "Hardware ECC Correce"
oDict.Add 196, "Reallocated Event Co"
oDict.Add 197, "Current Pending Sect"
oDict.Add 198, "Off-Line Scan Uncorr"
oDict.Add 199, "UltraDMA CRC Error C"
oDict.Add 200, "Write Error Rate "
oDict.Add 201, "Soft Read Error Rate"
oDict.Add 202, "Address Mark Errors "
oDict.Add 203, "ECC errors (Maxtor: "
oDict.Add 204, "Soft ECC Correction "
oDict.Add 205, "Thermal Asperity Rat"
oDict.Add 206, "Flying Height "
oDict.Add 207, "Spin High Current "
oDict.Add 208, "Spin Buzz "
oDict.Add 209, "Offline Seek Perfoma"
oDict.Add 210, "Vibration During Wri"
oDict.Add 211, "Vibration During Rea"
oDict.Add 212, "Shock During Write "
oDict.Add 220, "Disk Shift "
oDict.Add 221, "G-Sense Error Rate "
oDict.Add 222, "Loaded Hours "
oDict.Add 223, "Load/Unload Retry Co"
oDict.Add 224, "Load Friction "
oDict.Add 225, "/Unload Cycle Count "
oDict.Add 226, "Load 'In'-time "
oDict.Add 227, "Torque Amplification"
oDict.Add 228, "Power-Off Retract Cy"
oDict.Add 230, "GMR Head Amplitude "
oDict.Add 240, "Head Flying Hours "
oDict.Add 250, "Read Error Retry Rat"
End Function
Function GetPassword()
Dim IE
On Error Resume Next
Set IE = CreateObject( "InternetExplorer.Application" )
With IE
.AddressBar = False
.menubar = False
.Navigate "about:blank"
.Document.Title = "Password"
.ToolBar = False
.Resizable = False
.StatusBar = False
.Width = 340
.Height = 230
End With
With IE.Document.ParentWindow.Screen
IE.Left = (.AvailWidth - IE.Width ) \ 2
IE.Top = (.Availheight - IE.Height) \ 2
End With
Do While IE.Busy
WScript.Sleep 200
Loop
IE.Document.Body.InnerHTML = "<BODY SCROLL=""NO"" BGCOLOR=""#" & BCol & """ TEXT=""#" & TCol & """>" & _
"<FONT FACE=""arial"" SIZE=2>" & _
"Введите имя компьютера<BR><INPUT SIZE=""40"" " & "ID=""Computer""><BR>" &_
"Пользователь<BR><INPUT SIZE=""40"" " & "ID=""Login""><BR>" &_
"Пароль<BR><INPUT TYPE=""password"" SIZE=""40"" " & "ID=""Login"">" &_
"<P><INPUT TYPE=""hidden"" ID=""OK"" " & "NAME=""OK"" VALUE=""0"">"& _
"<INPUT TYPE=""submit"" VALUE="" OK "" " & "OnClick=""VBScript:OK.Value=1""></P>"
strComputer = "."
strLogin = ""
strPassword = ""
' IE.visible = True
' Do While IE.Document.All.OK.Value = 0
' WScript.Sleep 200
' Loop
If IE.Document.All.Computer.Value = "" then
strComputer = "."
else
strComputer = IE.Document.All.Computer.Value
If IE.Document.All.Login.Value <> "" then
strLogin = IE.Document.All.Login.Value
strPassword = IE.Document.All.Password.Value
else
strLogin = ""
strPassword = ""
end If
end If
IE.Quit
Set IE = Nothing
End Function
Понажимайте кнопок "Спасибо" )
Последний раз редактировалось directman66 Пт янв 26, 2018 1:11 pm, всего редактировалось 1 раз.
- За это сообщение автора directman66 поблагодарили (всего 2):
- TrDA (Вс янв 28, 2018 10:44 pm) • odinvolk (Пн май 01, 2023 6:00 am)
- Рейтинг: 2.33%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Модуль SystemInfo
Да, для линукса параметров маловато, уже писал https://majordomo.smartliving.ru/forum/ ... 999#p69999.
Но в приведённых скриптах их многовато, для того же расбери...
Тут вещь сугубо индивидуальная. Мне кажется самым правильным будет сделать табличку в базе, и модуль поставлять "пустым".
В модуле жмем кнопочку "добавить", и там уже выбираем параметр (температура, память, место на диске и т.д. и т.п.), далее единицы измерения - (для места к примеру kB, MB, GB, TB), далее опция - путь запроса - стандартный/настраиваемый, при настраиваемом даём изменить строку запроса, ну и, естественно, объект и свойство.
Но для этого надо очень серьезно модуль "перелопатить". По-этому даже не стал про такой вариант говорить. Но в идеале бы, конечно, его.
Но в приведённых скриптах их многовато, для того же расбери...
Тут вещь сугубо индивидуальная. Мне кажется самым правильным будет сделать табличку в базе, и модуль поставлять "пустым".
В модуле жмем кнопочку "добавить", и там уже выбираем параметр (температура, память, место на диске и т.д. и т.п.), далее единицы измерения - (для места к примеру kB, MB, GB, TB), далее опция - путь запроса - стандартный/настраиваемый, при настраиваемом даём изменить строку запроса, ну и, естественно, объект и свойство.
Но для этого надо очень серьезно модуль "перелопатить". По-этому даже не стал про такой вариант говорить. Но в идеале бы, конечно, его.
- За это сообщение автора nick7zmail поблагодарил:
- Amarok (Пт янв 26, 2018 11:55 am)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Модуль SystemInfo
Я собираю с многих машин через OHM.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram