如何在服务器上运行脚本(我写了一个脚本)

如何在服务器上运行脚本(我写了一个脚本)(1)

笔者之前维护着上千台服务器组成的服务器集群,如果每次需要在服务器上执行命令的时候,都要手动登录每台服务器进行操作的话,那也太麻烦了。你想想,如果在上千台服务器的集群中,每台服务器中只需要简单的执行一个相同的命令,那别说执行命令了,就是让你依次手动登录上千台服务器,那也够你受的了。估计依次登录上千台服务器,给你三天时间你可能都登不完,那怎么办呢?有没有什么好的方法来解决这个问题呢?

如何在服务器上运行脚本(我写了一个脚本)(2)

别急,我们今天就是来解决这个问题的。

说实话,我在维护上千台服务器集群的时候,并没有去依次手动登录每台服务器,为啥?没错,就是因为我懒啊!我懒的去登录,并且依次登录那么多台服务器,整个人都会崩溃的。

如何在服务器上运行脚本(我写了一个脚本)(3)

于是,我就想办法能不能写个脚本,让这个脚本接收我要执行的命令,然后将命令依次分发到集群上所有的服务器中执行,这不就解决问题了吗?说干就干。

不过,这里,有个需要注意的地方:那就是:需要提前配置好集群中每台服务器的主机名和IP地址的对应关系,能够互相使用主机名进行通信,并配置了SSH免密码登录。这一点不行担心,只要让运维在规划和分配服务器的时候,规划好就行了,无需后面再依次登录服务器处理。

为了方便小伙伴们理解,这里我们就假设集群中存在1024台服务器,每台服务器的主机名为binghe1~binghe1024。每台服务器可以通过主机名进行通信,接下来,我写了一个名称为distribute_command.sh的脚本,内容如下所示。

#!/bin/bashpcount=$#if (( pcount<1 )) ; thenecho no args;exit;fi#先在本机上执行命令echo ------------binghe$host-----------------$@#循环在集群中的远程节点上执行命令for (( host=1 ; host<=1024; host=host 1)) ; doecho ------------binghe$host-----------------ssh binghe$host $@done;

这个脚本的含义为:接收传递进来的命令,将命令分发到主机名为binghe1~binghe1024的服务器上执行,也就是说,使用这个脚本我们能够做到:同时在集群的服务器上执行相同的命令。

接下来,为distribute_command.sh脚本赋予可执行权限,如下所示。

chmod a x ./distribute_command.sh

使用格式如下:

./distribute_command.sh 在服务器上执行的完整命令

使用示例

  • 在集群中的每台服务器的/home目录下创建hello.txt文,内容为hello world

./distribute_command.sh echo "hello world" >> /home/hello.txt

  • 查看集群中每台服务器上hello.txt文件的内容

./distribute_command.sh cat /home/hello.txt

  • 删除集群中每台服务器上的hello.txt文件

./distribute_command.sh rm -rf /home/hello.txt

是不是很简单啊?所以说,有时候,不要盲目的去执行。很多时候,在做事情之前,要先思考下有没有更好的解决方案,有没有效率更加高效的解决方案。就比如这篇文章上说的,在上千台服务器上执行一条命令,如果依次手动登录每台服务器执行命令,估计花三天时间都搞不定;如果我们写了一个脚本的话,估计也就1分钟之内就搞定了。所以,效率和质量才是做事情需要追求的目标。

进一步说,如果没有提高做事效率和质量的思维,就会有被市场淘汰的风险。所以需要提高自身的竞争力!

很多程序员已意识到这一点,据CSDN《2020-2021中国开发者调查报告》数据显示,开发者持续学习的主要路径靠自学, 54% 参与调查的开发者会通过在未参加正式课程的情况下,自学一门新语言、框架或工具。35% 的人群愿意付费进行学习,57% 的开发者每周学习 6 小时以上,7 成的开发者参加培训的预算来自个人。

从报告可以看出,超一半的开发者愿意自学一门新语言、框架或工具,但这样的结果往往会导致两个结果。其一,思维上没有清晰的学习路径,知识碎片化,不成系统;其二,能力上缺乏如编程能力,编程思想,算法能力,架构能力胜任。

该如何破解这两大困境?这就需要CSDN软件工程师能力认证(以下简称C系列认证)来破局。C系列认证是由中国软件开发者网CSDN制定并推出的一个能力认证标准,已上线67天,覆盖全国高校300 。

如何在服务器上运行脚本(我写了一个脚本)(4)

C能力认证图谱

C认证清晰定义了软件工程师的能力,能够夯实软件开发核心技术,掌握企业级开发框架,吃透分布式架构,玩转微服务架构,搞定性能调优,完全胜任编程能力,编程思想,算法能力,架构能力。

通过提供免费训练,在训练过程中采用基于“明确路径 领取任务 刻意练习 大咖指导”的学习模型,让学员提升自我能力,满足大厂招聘要求!

认证考试分为基础能力 项目能力,任务中、考试时完成的项目都将在结束后进行开源,学员可自行维护,你可增加真实项目经历,提升简历硬实力!

C认证仲夏限时福利

如何在服务器上运行脚本(我写了一个脚本)(5)

添加时请备注:电子书 和 csdn ID

C认证根据C认证核心知识点,系统整理CSDN点击破万,收藏过千的硬核干货文章合集,每日分享至群内,汇集成系统性知识库,帮助大家自主学习

C认证预约方式

方式一、预约官网:https://ac.csdn.net/

预约后进入C认证任务小组

小组内有:

  1. C认证每阶段学习资料

  2. C认证每阶段实践任务,完成后还可收获合作企业赞助奖学金红包!

  3. 任务直播讲解以及大咖答疑

  4. 每天更新系统化的干货文章合集,汇集成系统性知识库,帮助大家自主学习

快快添加小助手,一起来记录自己的成长过程吧~

备注:C认证预约

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页