一条面试题:用一段shell来监控各节点文件是否一致

722阅读 0评论2010-03-10 greendays
分类:

[] [] [] []

的主机www解析为10个分布在全国各地的节点,用一段shell来监控各节点文件是否一致的详细思路。(节点禁止用IP进行访问)


dig |awk '$4=="A"{print $5}'|xargs -t -i curl http://{}/index.html -o index.html.{} > /dev/null 2>&1;md5sum *
dd65bd9015b6be69fb786e29c5980ea3  index.html.10.1.1.1
dd65bd9015b6be69fb786e29c5980ea3  index.html.10.1.1.2
05d450101a820d582c0a514dc3603836  index.html.10.1.1.3
e569041c6f2d9a6d5085552288a8ca3a  index.html.10.1.1.4

         1103    IN      CNAME   
      70      IN      A       10.1.1.1
      70      IN      A       10.1.1.2
     70      IN      A       10.1.1.3
      70      IN      A       10.1.1.4

我只能想到这样的方法,但其实还是用ip访问了,怎么可以不用ip访问,直接通过DNS轮询来获取全部节点上的文件?如果是智能DNS,那是不是没有办法?


| | |

比较麻烦的方法
  1. #!/bin/bash
  2. dig |awk '$4=="A"{print $5}' >> a.txt

  3. for x in `cat a.txt`
  4. do
  5. sed -i '/' hosts
  6. echo "  $x" >> hosts
  7. curl -o index.html.$x
  8. done

  9. md5sum index.html.*
复制代码
理论上说 服务器判断的是http refer
但是我测试了curl -e   ipadd
貌似不行.....不然的话 只要稍微改一下你的代码就可以了


| | |

又或者dig得到的A记录,本地host再查,最后再拿这几个文件对比!
__________________________________
我的偶像是黑哥


| | |

回复 xiaobaibbb


    你不睡觉吗。每次都是凌晨发帖,要注意休息啊呵呵
__________________________________
兴趣+勤奋+坚持+方法 = ?   keepmoving


| | |

最终用的还是ip不可能不用ip的!最终的通信走的还是dns:emn23:
__________________________________
Just enjoy you time


| | |

回复 a.a


    题目的意思是,这个网站只能用 来访问,而不能用他的IP地址来访问。虚拟主机一般都会配置成这样
__________________________________
努力,奋斗。从头上路。


| | |

我知道不能直接用ip访问啊,根据dig得到的A记录,来本地host成相对应的IP,然后访问域名
得到几个A记录就改几次hosts,这样不可以吗
__________________________________
我的偶像是黑哥


| | |



QUOTE:
我知道不能直接用ip访问啊,根据dig得到的A记录,来本地host成相对应的IP,然后访问域名
得到几个A记录就改 ...
xiaobaibbb 发表于 2010-03-07 13:51




    可以。不过这样做,得有root权限。还有,修改hosts,可能会影响到系统里要解析这个域名的其它程序。
__________________________________
努力,奋斗。从头上路。


| | |

哪个公司的题啊~呵呵
__________________________________
兴趣+勤奋+坚持+方法 = ?   keepmoving


| | |

迅雷:emn22:


| | |
  » » »
  快速回复主题
[] [] [] []

好像就只有添加到hosts里


| | |

一个疑问:

关键是:如何禁用了IP访问?
可以肯定的是:我们可以telnet到该ip的80端口。
如果是name-based虚拟主机:
直接telnet ipaddr <HEAD something
HOST: domain name
\r\n\r\n
EOD

原理就是这个。
设置HEADER里的HOST。


| | |
  » » »
上一篇:请问:cp不提示,直接覆盖参数是啥?
下一篇:[shell] 删除windows中的回车中\r