近期需要完善一个log机制,监控来自不同服务器的机器的脚本执行状况,特针对windows和Linux及web与命令行模式书写了一个函数来兼容。
写了如下一个function来,可以实现上面的需求:
function getServerAddr() {
//运行 web app
if (isset($_SERVER["SERVER_ADDR"])) {
return $_SERVER["SERVER_ADDR"];
} else { // Running CLI
if (stristr(PHP_OS, 'WIN')) {
// 针对windows服务器所执行的一种hacky方式
exec("ipconfig /all", $catch);
foreach ($catch as $line) {
$new_catch[] = iconv("gbk", "utf-8", $line) . "\n";
}
foreach ($new_catch as $new_line) {
if (preg_match(‘/IPv4 地址/', $new_line)) { //中文系统
list($t, $ip) = explode(‘:', $new_line);
$ip = trim($ip);
preg_match(‘/((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))/', $ip , $match);
return $match[1];
}
}
} else {
$ifconfig = shell_exec(‘/sbin/ifconfig eth0′);
preg_match(‘/addr:([\d\.]+)/', $ifconfig, $match);
return $match[1];
}
}
}
$ip = getServerAddr();
print $ip;
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn