使用wget/curl做个“小后门”
我承认这次我做了一回“标题党”,说回正题,假设这样一个场景,我手上有N多Linux服务器要管理(不是肉鸡,不要乱想),日常管理中积累了大量脚本,但是我不可能每台服务器上都去部署这些脚本,一旦改动脚本我又要机械、重复地再部署这些脚本,可想而知,随着我管理服务器数量的增长,我每次部署的工作量都在增长。
有没有一种方法可以减少这种愚蠢的工作呢?答案是肯定有的,将脚本都放在一台服务器上,让各个Linux 都定时“围观”一下就可以了。
具体怎么做呢?这就是本文的重点了。
我架了一台HTTP服务器,假设服务器名就叫 shell _center ,/test/目录中放了我写的脚本 df.sh 。
各个Linux服务器定时执行如下命令:
1 wget -qO- http://shell_center/test/df.sh | sh
或者
1 curl -s http://shell _center/test/df.sh | sh
当然脚本不一定是 shell 的也可以是 perl 。
这段代码超简单,能改的几率相当小,唯一的工作量就是部署到所有的 Linux 服务器,一次付出终身受惠,我只需维护好 shell_center 上的脚本就可以了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
如果场景合适当然没问题,要考虑:
1.对远程服务器依赖过重,服务器故障引起所有机器无法定时正常执行任务,违背了crond放在本地的初衷。
2.所有机器设定相同时间执行相同任务固然运维方便,但远程服务很难支持下载任务的高度并发。
3.安全隐患,有人黑掉你的http服务器,改动了某脚本,你的所有服务器就全“沦陷”了。
哈哈,路过帮顶了,做部份工作还是不错的!
定时执行? 如果脚本中有reboot命令呢 你不死定了?
或者其他不该定时执行的你也给定时了 如何解决
请教楼主:
1· -qO-这两个参数,不太明白
2·如果我想更新脚本的话,就不行了,他会默认生成f2.py f2.py.1 f2.py.2 f2.py.3,在文件名加.n
3·curl -s与wget -O-参数一样,把脚本内容打印出来?
长见识了。呵呵。
多谢分享,开阔了下思路
赞一个,运维就是要比谁更懒,而保持系统正常运行,