当前位置: 操作系统/服务器>linux
linux下使用perl获取本机ip的几种方法介绍
来源: 互联网 发布时间:2014-10-14
本文导语: 在使用 Gearman 做分布式处理时,各机需要注册一个独立的 job 作为信息反馈,为求方便,Gearman::Worker 脚本 register_function 代码又要通用,于是想到了使用各自的 ip 地址作为 job 命名。 那么怎么在 worker 脚本里获取本机 ip 作为 func...
在使用 Gearman 做分布式处理时,各机需要注册一个独立的 job 作为信息反馈,为求方便,Gearman::Worker 脚本 register_function 代码又要通用,于是想到了使用各自的 ip 地址作为 job 命名。
那么怎么在 worker 脚本里获取本机 ip 作为 func 呢?
第一种办法,最简单的,调用 shell:
代码如下:
$ip = `ifconfig eth0|grep -oE '([0-9]{1,3}.?){4}'|head -n 1`;
注:这里输入是固定的,所以简单的 [0-9]{1,3} 了,如果是在 web 程序等地方验证 ip,需要更严谨!
或:
代码如下:
$ip = `ifconfig eth0|awk -F: '/inet addr/{split($2,a," ");print a[1];exit}'`;
好吧,这样显得太不 perl 了,而且频繁的调用外部 shell 不太好
第二种:
代码如下:
open FH,"ifconfig eth0|";
while(){
last unless /inet addr:((d{1,3}.?){4})/;
print $1;
}
看起来稍微 perl 了一些,虽然实质跟上面的调用 shell 和 grep 法是一样的。
第三种,更 perl 一点,纯粹读文件:
代码如下:
open FH,'