十月 14, 2011

Shell实现“取得当前机器IP并用其替换配置文件中的IP属性”

Written by

 

本文来自:http://huanggang.me/archives/52
发表于 

 

我在工作中遇到这样一个需求:运行于glassfish中的某个ear需要一个system property(对应于domain.xml中的配置),该property的值是当前机器的ip地址。由于我的机器每次重新启动被分配的ip是不同的,而我不想每次都手动先ifconfig取得ip地址再手工替换配置文件的内容,所以就想用shell脚本来实现该功能。

先看最终脚本的样子:

cd /home/me/java/glassfish/domains/domain1/config
now=`date +%Y%m%d-%H%M%S | awk '{ print $1}'`
cp domain.xml domain.xml.bak.$now
ip=`ifconfig | grep 'inet 地址:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`
sed -i "s/123\.123\.123\.[0-9]\{1,3\}/$ip/g" domain.xml

依次解释:
第一行:就是切换目录,没什么说的;
第二行:取得当前时间的格式化字符串,如“20100722-122409”;
第三行:备份当前的domain.xml文件;
第四行(技术含量较高):从执行ifconfig命令的结果中取得当前ip地址,赋值给ip变量(我使用的是中文ubuntu所以ifconfig结果中也是中文:-));
第五行(技术含量最高):用sed命令,在domain.xml中查找之前已经有ip的内容,替换为当前ip的内容(由于在我机器上ip再变也只是最后一节的变化,所以正则表达式中前三节的内容都是固定的)。

Category : Linux/Unixshell

Tags :

Comments

2 Responses

  1. hg说道:

    哈哈,我的文件被转载过来了,我也过来看看!

  2. Roboby说道:

    嘿嘿,互相支持一下嘛!
    欢迎多来转转啊~~~~

发表评论

电子邮件地址不会被公开。

Proudly powered by WordPress and Sweet Tech Theme