整理应用信息列表
整理应用信息列表
现在我有一些应用的列表信息,但是发现最后一列缺少了对应的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脚本的内容如下:
view plaincopy01.#!/bin/bash
02.#mail:zhuying/jz/137@163.com
03.
04.Asname="`cat ip_list | awk '{print $2}'`"
05.
06.for As in $Asname
07.do
08.#message="`grep $As ip_list|awk '{print $2" "$1}'`"
09.ip="`grep $As ip_list|awk '{print $1}'`"
10.grep $As app.list | sed's#$# '$ip'#g'
11.#grep $As app.list | sed 's#'${As}'$#'${message}'#g'
12.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~\(≧▽≦)/~啦啦啦~
谢谢分享 又是好的经验,收藏:lol
页:
[1]