Use go program for checks
This commit is contained in:
@@ -50,7 +50,7 @@ global $DB,$agents;
|
|||||||
$check_arr = [];
|
$check_arr = [];
|
||||||
$comps = [];
|
$comps = [];
|
||||||
$pfInventoryComputerComputer = new PluginFusioninventoryInventoryComputerComputer();
|
$pfInventoryComputerComputer = new PluginFusioninventoryInventoryComputerComputer();
|
||||||
foreach (getAllDataFromTable(PluginFusioninventoryAgent::getTable()) as $a) {
|
foreach (getAllDataFromTable(PluginFusioninventoryAgent::getTable()) as $a) {
|
||||||
|
|
||||||
$check = [];
|
$check = [];
|
||||||
$a_computerextend = $pfInventoryComputerComputer->hasAutomaticInventory($a["computers_id"]);
|
$a_computerextend = $pfInventoryComputerComputer->hasAutomaticInventory($a["computers_id"]);
|
||||||
@@ -63,7 +63,7 @@ global $DB,$agents;
|
|||||||
$check_arr[] = $check;
|
$check_arr[] = $check;
|
||||||
$comps[$a["computers_id"]] = $check;
|
$comps[$a["computers_id"]] = $check;
|
||||||
//print_r($agent->getAgentStatusURLs());
|
//print_r($agent->getAgentStatusURLs());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$descriptorspec = array(
|
$descriptorspec = array(
|
||||||
|
|||||||
@@ -60,43 +60,77 @@ class PluginRemotesupportRemotesupport extends CommonDBTM {
|
|||||||
|
|
||||||
Toolbox::logInFile("remotsupport","Starting search of agents\n");
|
Toolbox::logInFile("remotsupport","Starting search of agents\n");
|
||||||
|
|
||||||
$agents = [];
|
|
||||||
$data_set = [];
|
$check_arr = [];
|
||||||
|
$comps = [];
|
||||||
|
$pfInventoryComputerComputer = new PluginFusioninventoryInventoryComputerComputer();
|
||||||
|
foreach (getAllDataFromTable(PluginFusioninventoryAgent::getTable()) as $a) {
|
||||||
|
|
||||||
|
$check = [];
|
||||||
|
$a_computerextend = $pfInventoryComputerComputer->hasAutomaticInventory($a["computers_id"]);
|
||||||
|
|
||||||
|
$check["url"] = "http://".$a_computerextend["remote_addr"].":62354/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(__DIR__.'/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);
|
||||||
|
|
||||||
|
Toolbox::logInFile("remotsupport","command returned $return_value\n");
|
||||||
|
}
|
||||||
|
|
||||||
$stids = self::getStatesIds();
|
$stids = self::getStatesIds();
|
||||||
|
|
||||||
|
$DB->update("glpi_computers", [
|
||||||
foreach (getAllDataFromTable(PluginFusioninventoryAgent::getTable()) as $a) {
|
'states_id' => $stids["Offline"] ] ,
|
||||||
|
[ '1' => '1' ]
|
||||||
$data_set[] = $a["id"];
|
);
|
||||||
$agents[$a["id"]] = $a;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($data_set as $id) {
|
foreach ($checked as $s) {
|
||||||
$agent = new PluginFusioninventoryAgent;
|
|
||||||
$agent->getFromDB((int)$id);
|
|
||||||
$st = $agent->getStatus();
|
|
||||||
|
|
||||||
if ($st["message"] != "noanswer")
|
|
||||||
Toolbox::logInFile("remotsupport",print_r($agents[$id],true));
|
|
||||||
|
|
||||||
$comp = new Computer();
|
$comp = new Computer();
|
||||||
$comp->getFromDB($agents[$id]["computers_id"]);
|
$comp->getFromDB($s->computers_id);
|
||||||
if ($st["message"] == "noanswer")
|
$comp->fields["states_id"] = $stids["Online"];
|
||||||
$comp->fields["states_id"] = $stids["Offline"];
|
|
||||||
else
|
|
||||||
$comp->fields["states_id"] = $stids["Online"];
|
|
||||||
$DB->update("glpi_computers", [
|
$DB->update("glpi_computers", [
|
||||||
'states_id' => $comp->fields["states_id"] ],
|
'states_id' => $comp->fields["states_id"] ],
|
||||||
[ 'id' => $agents[$id]["computers_id"] ]
|
[ 'id' => $s->computers_id ]
|
||||||
);
|
);
|
||||||
$comp->fields["contact"]."\n";
|
Toolbox::logInFile("remotsupport",$s->computers_id." ".$comp->fields["contact"]."\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static function cronInfo($name) {
|
static function cronInfo($name) {
|
||||||
|
|||||||
170
inc/test.php
Normal file
170
inc/test.php
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
FusionInventory
|
||||||
|
Copyright (C) 2010-2011 by the FusionInventory Development Team.
|
||||||
|
|
||||||
|
http://www.fusioninventory.org/ http://forge.fusioninventory.org/
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
This file is part of FusionInventory project.
|
||||||
|
|
||||||
|
FusionInventory is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
FusionInventory is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with FusionInventory. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@package FusionInventory
|
||||||
|
@author Walid Nouh
|
||||||
|
@co-author
|
||||||
|
@copyright Copyright (c) 2010-2011 FusionInventory team
|
||||||
|
@license AGPL License 3.0 or (at your option) any later version
|
||||||
|
http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||||
|
@link http://www.fusioninventory.org/
|
||||||
|
@link http://forge.fusioninventory.org/projects/fusioninventory-for-glpi/
|
||||||
|
@since 2010
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
include ("../../../inc/includes.php");
|
||||||
|
|
||||||
|
declare(ticks=1);
|
||||||
|
|
||||||
|
|
||||||
|
$state_online = [
|
||||||
|
'name' => 'Online',
|
||||||
|
'entities_id' => 0,
|
||||||
|
'is_recursive' => 0,
|
||||||
|
'comment' => '',
|
||||||
|
'states_id' => 0,
|
||||||
|
'completename' => 'Online',
|
||||||
|
'level' => 1,
|
||||||
|
'ancestors_cache' => '[]',
|
||||||
|
'sons_cache' => 'NULL',
|
||||||
|
'is_visible_computer' => 1,
|
||||||
|
'is_visible_monitor' => 0,
|
||||||
|
'is_visible_networkequipment' => 0,
|
||||||
|
'is_visible_peripheral' => 0,
|
||||||
|
'is_visible_phone' => 0,
|
||||||
|
'is_visible_printer' => 0,
|
||||||
|
'is_visible_softwareversion' => 0,
|
||||||
|
'is_visible_softwarelicense' => 0,
|
||||||
|
'is_visible_line' => 0,
|
||||||
|
'is_visible_certificate' => 0,
|
||||||
|
'is_visible_rack' => 0,
|
||||||
|
'is_visible_passivedcequipment' => 0,
|
||||||
|
'is_visible_enclosure' => 0,
|
||||||
|
'is_visible_pdu' => 0,
|
||||||
|
'is_visible_cluster' => 0,
|
||||||
|
'is_visible_contract' => 0,
|
||||||
|
'is_visible_appliance' => 0];
|
||||||
|
/*
|
||||||
|
$ret = $DB->insert(
|
||||||
|
'glpi_states', $state_online
|
||||||
|
);
|
||||||
|
|
||||||
|
$state_offline = $state_online;
|
||||||
|
$state_offline["name"] = 'Offline';
|
||||||
|
$state_offline["completename"] = 'Offline';
|
||||||
|
|
||||||
|
$ret = $DB->insert(
|
||||||
|
'glpi_states', $state_offline
|
||||||
|
);
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
$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);
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
global $DB,$agents;
|
||||||
|
|
||||||
|
$check_arr = [];
|
||||||
|
$pfInventoryComputerComputer = new PluginFusioninventoryInventoryComputerComputer();
|
||||||
|
foreach (getAllDataFromTable(PluginFusioninventoryAgent::getTable()) as $a) {
|
||||||
|
|
||||||
|
$check = [];
|
||||||
|
$a_computerextend = $pfInventoryComputerComputer->hasAutomaticInventory($a["computers_id"]);
|
||||||
|
|
||||||
|
$check["url"] = "http://".$a_computerextend["remote_addr"].":62354/status";
|
||||||
|
$check["id"] = $a["id"];
|
||||||
|
$check["computers_id"] = $a["computers_id"];
|
||||||
|
$check["status"] = "unknown";
|
||||||
|
|
||||||
|
$check_arr[] = $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(__DIR__.'/bench_urls', $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";
|
||||||
|
}
|
||||||
|
|
||||||
|
$DB->update("glpi_computers", [
|
||||||
|
'states_id' => NULL ] ,
|
||||||
|
[ '1' => '1' ]
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($checked as $s) {
|
||||||
|
echo $s->computers_id." ";
|
||||||
|
|
||||||
|
$comp = new Computer();
|
||||||
|
$comp->getFromDB($s->computers_id);
|
||||||
|
$comp->fields["states_id"] = 2;
|
||||||
|
$DB->update("glpi_computers", [
|
||||||
|
'states_id' => $comp->fields["states_id"] ],
|
||||||
|
[ 'id' => $s->computers_id ]
|
||||||
|
);
|
||||||
|
echo $comp->fields["contact"]."\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// print_r($a_computerextend);
|
||||||
|
exit(0);
|
||||||
Reference in New Issue
Block a user