Example #1
0
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;
}
Example #2
0
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";