改进的烂服务器宕机监控脚本

/ 0评 / 0

又改进了下烂服务器的宕机自动重启脚本,让逻辑简单一点.

function string2array($xml)

{

    preg_match_all('/<(.*?)>([^<]+)</\1>/i', $xml, $match);

    $result = array();

    foreach ($match[1] as $x => $y) {

        $result[$y] = $match[2][$x];

    }

    return $result;

}

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://solusvm.virmach.com/api/client/command.php?key=' . $api_key . '&hash=' . $api_hash . '&action=status');

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(

    'Expect:  '

));

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_NOSIGNAL, true);

curl_setopt($ch, CURLOPT_TIMEOUT_MS, 2000);

/* Time-out => 2000ms */

$data = curl_exec($ch);

if ($data) {

    $result = string2array($data);

} else {

    /* 服务器状态未知. */

    exit(0);

}

if (strcmp($result['vmstat'], 'offline')) {

    /* 服务器正常 */

} else {

    /* 服务器异常 */

    curl_setopt($ch, CURLOPT_URL, 'https://solusvm.virmach.com/api/client/command.php?key=' . $api_key . '&hash=' . $api_hash . '&action=boot');

    $data = curl_exec($ch);

    if ($data) {

        $result = string2array($data);

        if (strcmp($result['vmstat'], 'booted')) {

            /* 不能重新开机 */

        } else {

            /* 重新开机 */

        }

    } else {

        /* 重启状态未知. */

    }

}

然后把脚本加到crontab里面.示例.

*/1 * * * * /usr/bin/php /full-path/check-offline.php

愉快的看着烂服务器.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注