function execute_script($scriptid, $hostid) { $res = 1; $command = script_make_command($scriptid, $hostid); $nodeid = id2nodeid($hostid); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (!$socket) { $res = 0; } if ($res) { global $ZBX_SERVER, $ZBX_SERVER_PORT; $res = socket_connect($socket, $ZBX_SERVER, $ZBX_SERVER_PORT); } if ($res) { $send = "Command{$nodeid}{$hostid}{$command}\n"; socket_write($socket, $send); } if ($res) { $res = socket_read($socket, 65535); } if ($res) { list($flag, $msg) = split("", $res); $message["flag"] = $flag; $message["message"] = $msg; } else { $message["flag"] = -1; $message["message"] = S_CONNECT_TO_SERVER_ERROR . ' [' . $ZBX_SERVER . ':' . $ZBX_SERVER_PORT . '] [' . socket_strerror(socket_last_error()) . ']'; } if ($socket) { socket_close($socket); } return $message; }
function insert_command_result_form($scriptid, $hostid) { $result = execute_script($scriptid, $hostid); $script_info = DBfetch(DBselect("SELECT name FROM scripts WHERE scriptid={$scriptid}")); $frmResult = new CFormTable($script_info["name"] . ': ' . script_make_command($scriptid, $hostid)); $message = $result["message"]; if ($result["flag"] != 0) { error($message); $message = ""; } $frmResult->addRow(S_RESULT, new CTextArea("message", $message, 100, 25, 'yes')); $frmResult->addItemToBottomRow(new CButton('close', S_CLOSE, 'window.close();')); $frmResult->Show(); }
require_once "include/scripts.inc.php"; require_once "include/forms.inc.php"; $page['title'] = "S_SCRIPTS"; $page['file'] = 'scripts_exec.php'; define('ZBX_PAGE_NO_MENU', 1); include_once "include/page_header.php"; // VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION $fields = array('hostid' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, 'isset({execute})'), 'scriptid' => array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, 'isset({execute})'), 'execute' => array(T_ZBX_INT, O_OPT, P_ACT, IN('0,1'), null)); check_fields($fields); if (isset($_REQUEST['execute'])) { $scriptid = $_REQUEST['scriptid']; $hostid = $_REQUEST['hostid']; $sql = 'SELECT name ' . ' FROM scripts ' . ' WHERE scriptid=' . $scriptid; $script_info = DBfetch(DBselect($sql)); $result = CScript::execute(array('hostid' => $hostid, 'scriptid' => $scriptid)); if ($result === false) { show_messages(false, '', S_SCRIPT_ERROR); } else { $message = $result['value']; if ($result['response'] == 'failed') { error($message); show_messages(false, '', S_SCRIPT_ERROR); $message = ''; } $frmResult = new CFormTable($script_info['name'] . ': ' . script_make_command($scriptid, $hostid)); $frmResult->addRow(S_RESULT, new CTextArea('message', $message, 100, 25, 'yes')); $frmResult->addItemToBottomRow(new CButton('close', S_CLOSE, 'window.close();')); $frmResult->show(); } } include_once "include/page_footer.php";