89 lines
2.4 KiB
PHP
89 lines
2.4 KiB
PHP
<?php
|
|
|
|
include "../../../inc/includes.php";
|
|
|
|
declare (ticks = 1);
|
|
|
|
global $DB, $agents;
|
|
|
|
$check_arr = [];
|
|
$comps = [];
|
|
|
|
$rs_path = Plugin::getPhpDir('remotesupport');
|
|
|
|
$pfConfig = new PluginFusioninventoryConfig();
|
|
$port = $pfConfig->getValue('agent_port');
|
|
|
|
$pfInventoryComputerComputer = new PluginFusioninventoryInventoryComputerComputer();
|
|
foreach (getAllDataFromTable(PluginFusioninventoryAgent::getTable()) as $a) {
|
|
|
|
$check = [];
|
|
$a_computerextend = $pfInventoryComputerComputer->hasAutomaticInventory($a["computers_id"]);
|
|
|
|
$check["url"] = "http://" . $a_computerextend["remote_addr"] . ":" . $port . "/status";
|
|
$check["id"] = $a["id"];
|
|
$check["computers_id"] = $a["computers_id"];
|
|
$check["status"] = "unknown";
|
|
|
|
$check_arr[] = $check;
|
|
$comps[$a["computers_id"]] = $check;
|
|
//print_r($agent->getAgentStatusURLs());
|
|
}
|
|
|
|
$descriptorspec = array(
|
|
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
|
|
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
|
|
2 => array("file", "/tmp/error-output.txt", "a"), // stderr is a file to write to
|
|
);
|
|
|
|
$cwd = '/tmp';
|
|
$env = array('debug' => 'false');
|
|
|
|
$process = proc_open($rs_path . '/bin/check_status', $descriptorspec, $pipes, $cwd, $env);
|
|
|
|
if (is_resource($process)) {
|
|
// $pipes now looks like this:
|
|
// 0 => writeable handle connected to child stdin
|
|
// 1 => readable handle connected to child stdout
|
|
// Any error output will be appended to /tmp/error-output.txt
|
|
|
|
fwrite($pipes[0], json_encode($check_arr));
|
|
fclose($pipes[0]);
|
|
|
|
$checked = json_decode(stream_get_contents($pipes[1]));
|
|
fclose($pipes[1]);
|
|
|
|
// It is important that you close any pipes before calling
|
|
// proc_close in order to avoid a deadlock
|
|
$return_value = proc_close($process);
|
|
|
|
echo "command returned $return_value\n";
|
|
}
|
|
|
|
$req = $DB->request('glpi_states', ['FIELDS' => ['glpi_states' => ['id', 'name']]], ['OR' => ['name' => 'Online', 'name' => 'Offline']]);
|
|
|
|
$ret = $req->next();
|
|
$states_ids[$ret['name']] = $ret['id'];
|
|
$ret = $req->next();
|
|
$states_ids[$ret['name']] = $ret['id'];
|
|
print_r($states_ids);
|
|
|
|
$DB->update("glpi_computers", [
|
|
'states_id' => $states_ids["Offline"] ] ,
|
|
[ '1' => '1' ]
|
|
);
|
|
|
|
$ids = [];
|
|
foreach ($checked as $s) {
|
|
echo $s->computers_id."\n";
|
|
$ids[] = $s->computers_id;
|
|
}
|
|
|
|
$DB->update("glpi_computers", [
|
|
'states_id' => $states_ids["Online"] ],
|
|
[ 'id' => $ids ]
|
|
);
|
|
|
|
// print_r($a_computerextend);
|
|
exit(0);
|