- 论坛徽章:
- 18
|
本帖最后由 bikkuri 于 2014-01-31 08:25 编辑
大家新年好!
还有一个问题请教各位高手!
我的busybox从远端Linux服务器上接受到状态更新数据后,需要根据本地的状态进行一些判断后,修改状态更新文件,然后再返还给Linux服务器。
远端传来的更新文件:update.txt- 201401311130 beijing unknown2 A 156
- 201401311132 shanghai box2 K 17
- 201401311133 beijing unknown3 C 49
- 201401311134 beijing unknown1 F 23
- 201401311135 shanghai box1 M 35
- 201401311136 shanghai box3 N 28
复制代码 本地的变量设定:
$base, $hostname, $line, $number分别指向4个本地文件,其内容如下:- root@unknown2:/tmp# echo "$(date +%Y%m%d%H%M) $(cat $base) $(cat $hostname) $(cat $line) $(cat $number)"
- 201401311136 beijing unknown2 A 158
复制代码 更新规则:
1.首先取当前时间$(date +%Y%m%d%H%M),将原来的update.txt中的超过10分钟的记录全部删除;
2.在剩下的记录中,查找有没有hostname和本地hostname相同的记录,如果有的话则删除;
3.在剩下的记录中,查找有没有base和本地base相同的记录,
如果没有base和本地base相同的记录的话,
添加echo "$(date +%Y%m%d%H%M) $(cat $base) $(cat $hostname) $(cat $line) $(cat $number)"的输出到更新文件的最后;
如果有base和当前base相同的记录的话,检查其$line是不是和本地$line相同,
如果有相同的话,比较其$number与本地$number的大小,
如果其$number大于本地$number,
则本地$line的字母变为后面一个字母,比如A变成B,但是如果B也被占用的话,则顺延到C,然后本地$number变为0;
添加echo "$(date +%Y%m%d%H%M) $(cat $base) $(cat $hostname) $(cat $line) $(cat $number)"的输出到更新文件的最后;
如果其$number小于或等于本地$number,
添加echo "$(date +%Y%m%d%H%M) $(cat $base) $(cat $hostname) $(cat $line) $(cat $number)"的输出到更新文件的最后;
如果其$line都和本地$line不同的话,
添加echo "$(date +%Y%m%d%H%M) $(cat $base) $(cat $hostname) $(cat $line) $(cat $number)"的输出到更新文件的最后;
例如以上的更新文件update.txt在处理完后应该变为:
- 201401311132 shanghai box2 K 17
- 201401311133 beijing unknown3 C 49
- 201401311134 beijing unknown1 F 23
- 201401311135 shanghai box1 M 35
- 201401311136 shanghai box3 N 28
- 201401311136 beijing unknown2 A 158
复制代码 谢谢大家! |
|