现在的位置: 首页 > 综合 > 正文

整理应用信息列表

2013年09月17日 ⁄ 综合 ⁄ 共 1396字 ⁄ 字号 评论关闭

现在我有一些应用的列表信息,但是发现最后一列缺少了对应的ip,那么针对比较多的信息,我应该怎样添加呢

手动的话,我肯定会疯的,那么我们就使用脚本吧~

信息列表的内容如下格式:

应用名 应用包名 实例 AS

内容:
app-sohu /usr/weblogicapp/sohu/app-ws-sohu.war sohuServer-150 99bill-as20

思路:

针对这么多主机,我只能先统计主机,然后找到对应的ip,统计到一个文件里面。

应用列表信息名为app.list

主机列表信息可以这样统计:

cat app.list | awk '{print $4}'|sort|uniq > ip_list

然后在 ip_list中加上主机对应的ip,整理后内容如下:

192.168.137.148 zy-as18
192.168.137.147 zy-as17
192.168.137.150 zy-as20
192.168.137.149 zy-as19
192.168.137.193 zy-as22
192.168.137.192 zy-as21
192.168.137.196 zy-as23
192.168.137.197 zy-as24
192.168.137.47 zy-as47
192.168.137.48 zy-as48
192.168.137.121 zy-as121
192.168.137.122 zy-as122

那么下面我们就可以使用脚本执行了~

add.sh脚本的内容如下:

#!/bin/bash
#mail:zhuying/jz/137@163.com

Asname="`cat ip_list | awk '{print $2}'`"

for As in $Asname
do
  #message="`grep $As ip_list|awk '{print $2" "$1}'`"
  ip="`grep $As ip_list|awk '{print $1}'`"
  grep $As app.list | sed  's#$# '$ip'#g'
  #grep $As app.list | sed 's#'${As}'$#'${message}'#g'
done

我这里其实是在最后一列加上了主机对应的ip信息~

之前其实本来是替换的,将搜索到的主机信息替换成对应的主机和ip信息,例如:

将搜索到的zy-as122替换成zy-as122 192.168.137.122,但是不晓得为何一直不成功,所以就用这种方法了~
疑问:

为何不直接sed -i呢,因为我之前也试过了,只是会报错,后来想想应该是这样的,你对文件又读又写的,可能就是那个锁机制吧~

那么我们就不能够直接改变app.list文件信息了,也就是说

grep $As app.list | sed  's#$# '$ip'#g'
>
app.list【不正确,锁机制,边读边写肯定会出错~】

grep $As app.list | sed  's#$# '$ip'#g'
>
app.list.bak【也不正确,因这是在循环中,app.list.bak中只会有最后一次循环的信息~】

grep $As app.list | sed  's#$# '$ip'#g'
>>
app.list.bak【正确,但是只能执行一次O(∩_∩)O哈!】

或者执行:

sh add.sh > app.list.bak

那么你查看一下app.list.bak没有问题的话,你就可以将app.list.bak直接move成app.list~\(≧▽≦)/~啦啦啦~

抱歉!评论已关闭.