PHP跨平台获取服务器IP地址自定义函数分享


Posted in PHP onDecember 29, 2014

近期需要完善一个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;
PHP 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
PHP安全编程之加密功能
Oct 09 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
详解PHP发送邮件知识点
May 06 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 PHP
php提取微信账单的有效信息
Oct 01 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
Feb 03 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 #PHP
php读取远程gzip压缩网页的方法
Dec 29 #PHP
php导入大量数据到mysql性能优化技巧
Dec 29 #PHP
推荐几个开源的微信开发项目
Dec 28 #PHP
dedecms集成财付通支付接口
Dec 28 #PHP
VPS中使用LNMP安装WordPress教程
Dec 28 #PHP
php随机取mysql记录方法小结
Dec 27 #PHP
You might like
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python中字典的基础知识归纳小结
2015/08/19 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
python判断是空的实例分享
2020/07/06 Python
详解Python流程控制语句
2020/10/28 Python
Python绘制数码晶体管日期
2021/02/19 Python
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
大学生专科学习生活的自我评价
2013/12/07 职场文书
业务员简历自我评价
2014/03/06 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android
Python实现打乒乓小游戏
2021/09/25 Python