免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5577 | 回复: 16
打印 上一主题 下一主题

[系统管理] 一个同步日志的脚本 [复制链接]

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-16 08:02 |只看该作者 |倒序浏览
本帖最后由 rdcwayx 于 2013-10-16 10:03 编辑

看到 @刺客阿地 的这个帖子, 很不错的话题,但埋没在其他帖子里,不被注意。我重新起个帖子来讨论一下。

http://bbs.chinaunix.net/forum.p ... 2&fromuid=28783

原文:

正好借这个帖子,我问个脚本问题。
  1. #!/bin/bash
  2. #create xxx  
  3. btime=`date -d "-1 day" +%y-%m-%d`
  4. atime=`date -d "-1 day" +%Y-%m-%d`
  5. ctime=`date +%Y%m%d`
  6. dtime=`date -d "-1 day" +%Y%m%d`
  7. #rsync www server
  8. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.48::benlog/catalina_log.$btime /opt/log/48_ben/ben/
  9. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.49::benlog/catalina_log.$btime /opt/log/49_ben/ben/
  10. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.51::beforelog/catalina_log.$btime /opt/log/51_before/before/
  11. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.55::beforelog/catalina_log.$btime /opt/log/55_before/before/

  12. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.52::pagservicelog/catalina_log.$btime /opt/log/52_pag/pag/
  13. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.56::pagerservicelog/catalina_log.$btime /opt/log/56_pag/pag/

  14. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.53::paylog/catalina_log.$btime /opt/log/53_pay/pay/
  15. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.57::paylog/catalina_log.$btime /opt/log/57_pay/pay/

  16. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.54::mentlog/catalina_log.$btime /opt/log/54_ment/ment/
  17. rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd moon_web@192.168.0.58::mentlog/catalina_log.$btime /opt/log/58_ment/ment/
复制代码
这是一个同步日志的脚本,我想做到的是,怎么样才能让他自动识别我需要下载的日志?

比方说我想下载48,49这两台机器的日志,如何让程序自动去下载判别呢?

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2013-10-16 08:12 |只看该作者
不知道他的疑问到底在什么地方

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
3 [报告]
发表于 2013-10-16 08:21 |只看该作者
本帖最后由 rdcwayx 于 2013-10-16 13:14 编辑

我的思路是: 

先建个列表:
  1. $ cat server.list
  2. moon_web 192.168.0.48  ben
  3. moon_web 192.168.0.49  ben
  4. moon_web 192.168.0.51  before
  5. moon_web 192.168.0.52  pagservice
  6. moon_web 192.168.0.53  pay
  7. moon_web 192.168.0.54  ment
  8. moon_web 192.168.0.55  before
  9. moon_web 192.168.0.56  pagerservice
  10. moon_web 192.168.0.57  pay
  11. moon_web 192.168.0.58  ment

复制代码
再简化程序:
  1. #!/bin/bash
  2. #create xxx  

  3. # Usage: $0 IP1 IP2 IP3 ...

  4. btime=`date -d "-1 day" +%y-%m-%d`
  5. atime=`date -d "-1 day" +%Y-%m-%d`
  6. ctime=`date +%Y%m%d`
  7. dtime=`date -d "-1 day" +%Y%m%d`

  8. list=$*                                                                       # 将脚本后面的参数引入, 也就是服务器IP 列表

  9. #rsync www server
  10. for server in $list
  11. do
  12.     grep " $server " server.list |while read user IP key X    # 将 server.list 按照IP过滤后,分配给三个变量: user, IP, key。 X 用来避免干扰,如果文件后有多余的字符。
  13.     do
  14.         id=${IP##*.}                                                     # 取出 IP 地址 的最后一个字段,比如48, 或者49, 因为后面的目录名里含这个。
  15.         rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd ${user}@${IP}::${key}log/catalina_log.$btime /opt/log/${id}_${key}/${key}/           # 这个就是对各个变量的引入。 理解了上面的代码,这个就好理解了。
  16.     done
  17. done
复制代码
运行的时候,只要跟上IP地址即可
  1. test.sh 192.168.0.48 192.168.0.49
复制代码

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
4 [报告]
发表于 2013-10-16 09:13 |只看该作者
就是个根据ip选择的过程吧

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
5 [报告]
发表于 2013-10-16 10:11 |只看该作者
@rdcwayx感谢版主,版主对我脚本想要的结果,分析的很到位。

我的意思就是想运行脚本,然后根据IP或者工程名字去做运行,这样的话,每次想同步哪台机器,就直接运行脚本,加上IP地址或者工程名字,有选择的去运行自己想要同步的机器日志即可。

感谢版主,感谢大家的回答!

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
6 [报告]
发表于 2013-10-16 10:12 |只看该作者
不知道还有没更简化的方法

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
7 [报告]
发表于 2013-10-16 10:15 |只看该作者
回复 4# bikong0411

这脚本简化后,当中有些变量用的,我看不懂。。。基本公共不扎实,要下功夫了。。。{:3_185:}

   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 2013-10-16 10:21 |只看该作者
如果还要简化的话,那么就要改一下日志的输出结构了。

比如,每个服务器上都建个单独的日志归档目录 /logs, 在logs目录下建子目录设定不同的工程名字。 每个应用的logs 目录都建链接到这个/logs/子工程目录下, 这样的话,只需要对最上层的logs 目录同步即可,所有子目录自动获得更新。代码也会更简单。

这个只需要做一次设定即可。

  1. login 192.168.0.48
  2. mkdir -p /logs/benlog
  3. ln -s /logs/benlog /PATH/benlog
复制代码

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
9 [报告]
发表于 2013-10-16 10:36 |只看该作者
回复 8# rdcwayx

嗯,感谢,这方法确实不错。我会尝试的。


   

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
10 [报告]
发表于 2013-10-16 11:04 |只看该作者
@rdcwayx版主,你写的这个脚本,当中有很多地方我没明白,所以在这里不耻下问一下,基础不牢,还望见谅。
server.list这个表建立,是个思路,表当中包含IP地址,工程名字,rsync的账户名。
list=$*

#rsync www server
for server in $list
do
    grep " $server " server.list |while read user IP key X
    do
        id=${IP##*.}
        rsync -vzrtopgl --progress --password-file=/etc/rsyncd.passwd ${user}@${IP}:{key}log/catalina_log.$btime /opt/log/${id}_${key}/${key}/
    done
done
这一段当中,list=$*是什么意思 ,还有$server   server.list,  id=${IP##*.}     ${user}@${IP}:{key}   ${id}_${key}/${key}/

这些地方的变量,我都有点不明白了,新手,不好意思,在这里笨笨的问一下,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP