[Модуль] SystemInfo (sysinfo)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Модуль SystemInfo

Сообщение webms » Чт янв 25, 2018 3:02 pm

Vovix писал(а):а у меня так выводиться:
Вложение Скриншот 2018-01-23 18.49.03.png больше недоступно
Спасибо большое за код, немного изменил под светлый фон :)
Вложения
Clip2net_180125214910.png
Clip2net_180125214910.png (14.3 КБ) 4620 просмотров
Последний раз редактировалось webms Чт янв 25, 2018 9:50 pm, всего редактировалось 1 раз.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль SystemInfo

Сообщение nick7zmail » Чт янв 25, 2018 5:36 pm

Установил модуль...
Во-первых конечно же спасибо))давно статы хотел подбирать с разбери, да всё лень было команды искать...а тут модуль такой подъехал))) даже в коннекте поддержу, как только закончу писать))
Во-вторых можно просьбу немножечко доработать? (всё что говорить буду - касается линукса)

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); 
/proc/loadavg выдаёт среднюю загрузку за 1 сек, 5 сек и 15 сек...я как раз брал за 5 сек. Выдаёт в десятых долях (0,34 к примеру, по-этому умножал на 100, для показаний в %), но тоже не совсем корректно, т.к. иногда подскакивало выше 1. Может как раз сигнализировало о перегрузках...я хз....но это самое адекватное отображение, которое нашел.
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
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Модуль SystemInfo

Сообщение skysilver » Чт янв 25, 2018 6:03 pm

nick7zmail писал(а):4) Прошу добавить температуру проца

Код: Выделить всё

$temp=exec('cat /sys/class/thermal/thermal_zone0/temp')/1000;
sg('server.cputemp', round($temp,0));
Вот эта штука очень специфична и будет разная на разных платформах.
За это сообщение автора skysilver поблагодарил:
Samir77 (Вс май 13, 2018 9:55 pm)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль SystemInfo

Сообщение nick7zmail » Чт янв 25, 2018 6:07 pm

Тогда в настройки путь запроса вывести....либо при установке модуль проводить что то типа find /sys | grep thermal_zone , и результат сохранять.
А лучше и то и другое сделать...

Как вариант - можно все temp находить, и все температуры сохранять...тоже кстати неплохой вариант...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 869 раз
Контактная информация:

Re: Модуль SystemInfo

Сообщение Eraser » Чт янв 25, 2018 6:23 pm

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 или нажмите кнопку "Спасибо"!!! :D
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль SystemInfo

Сообщение nick7zmail » Чт янв 25, 2018 6:47 pm

Выполните find /sys | grep temp, покажет все доступные датчики температуры.
С виндой - согласен...я про wmiс то не знал)) только через ohw думал можно...но для линукса забирается просто...хотелось бы видеть в ближайших обновлениях...и да...локализацию бы какую нить)) название модуля на языки перевести, и как минимум аптайм. Либо аптайм можно в юникс-формате сохранить...пусть кто как хочет интерпретирует))...
В процентах занятая память, и занятое дисковое пространство не помешало бы...чтобы напрямую в элементы меню можно бы было выводить.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль SystemInfo

Сообщение directman66 » Пт янв 26, 2018 11:32 am

Для линукса мало параметров возвращает.

Ниже список запросов, которые опрашиваются у меня.

Можно добавить их? Например указать параметры и периодичность было бы не лишним.

И кастомный бы еще параметр сделать.

раз в минуту
СпойлерПоказать
//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]));
раз в час:
СпойлерПоказать
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));
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль SystemInfo

Сообщение directman66 » Пт янв 26, 2018 11:41 am

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
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль SystemInfo

Сообщение nick7zmail » Пт янв 26, 2018 11:47 am

Да, для линукса параметров маловато, уже писал https://majordomo.smartliving.ru/forum/ ... 999#p69999.
Но в приведённых скриптах их многовато, для того же расбери...
Тут вещь сугубо индивидуальная. Мне кажется самым правильным будет сделать табличку в базе, и модуль поставлять "пустым".
В модуле жмем кнопочку "добавить", и там уже выбираем параметр (температура, память, место на диске и т.д. и т.п.), далее единицы измерения - (для места к примеру kB, MB, GB, TB), далее опция - путь запроса - стандартный/настраиваемый, при настраиваемом даём изменить строку запроса, ну и, естественно, объект и свойство.
Но для этого надо очень серьезно модуль "перелопатить". По-этому даже не стал про такой вариант говорить. Но в идеале бы, конечно, его.
За это сообщение автора nick7zmail поблагодарил:
Amarok (Пт янв 26, 2018 11:55 am)
Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль SystemInfo

Сообщение directman66 » Пт янв 26, 2018 1:54 pm

Я собираю с многих машин через OHM.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить