运维在日常工作中经常要对自己管理的事务进行管理(废话)
这些管理包括但不限于系统,网络,中间件,数据库,容器。。。
由于市面上已经对IT环境大量采用了分布,集群式架构,统一配置管理已经是运维日常工作中避不开的环节。
举个例子
目前有三台服务器构成一个集群,host1,host2,host3。你需要对这三台服务器需要进行统一配置,例如修改一个配置文件。
按每台服务器执行完需要5s计算,你花费了15s。这样看,用ssh一台台来貌似也不花多长时间嘛。
ssh host1 -》cmd执行 5s
ssh host2 -》cmd执行 10s
ssh host3 -》cmd执行 15s
OK,但随着时间的推移,你管理的服务器数量增加了,你每台服务器管理的配置文件多了,每个配置文件的参数修改又多了
以算法计算,这是个立方阶。
O(n^3)
如果你对这概念不清,OK,以我的实际工作经验,180台服务器,修改NTP配置文件,三个人,按着传统方法来做,最快花费时间是1小时。
然后我自己的感悟是前10台的操作,是精神饱满,后面开始就会厌烦。甚至懒得去确认修改后的结果,这个时候容易造成人为错误。
所以,并行的统一管理方法被提了出来。
说明:公司给我配置的电脑使用的是REDHAT(LINUX的解决方法太多了,甚至开发出更方便的工具),为什么我还要研究windows呢?因为我发现外面很多公司还有公司内部外部支持客户项目组里都在用windows,windows的通用性更强。(更不用说商业客户爱给支持项目弄个什么远程桌面这种玩意,然后又不舍得掏钱买相关商业软件,例如xshell和secureCRT。)
这篇文章将总结我使用过的免费开源WINDOWS ssh工具
Tera Term(日本人开发的,日本相关项目最爱用)
安装方法
百度自己搜去
使用方法
1.log保留,初学者最爱问如何保留log,怕无日志追查,对于日志来说,这里有个简便的保留方法
设置-》附加设置-》日志
image.png如图设置,日志名称采用了strftime格式
&h为登陆的服务器名
%Y-%m-%d-%H-%M是时间格式,为年-月-日-时-分
路径不说了,自己选。然后确定
设置-》保存配置
image请别名一个配置,例如我就写了个log.INI。
2.利用powershell,来同时登陆和载入自己的配置
这一步很重要,会节省你很多的时间。
在tera term的帮助文件里会介绍tera term 的commandline的使用,详情可以查看。
首先,如果你没有管理员权限(大部分远程桌面都没有),无法修改系统路径。
可以用powershell临时添加路径。
$env:Path+=";C:\Program Files (x86)\teraterm"
然后用个循环来执行ttermpro这个tera term的命令行命令
PS E:\images\vagrantbox\mybox> $svrlist -replace "`n", "`",`"" -replace "^", "`"" -replace "$", "`""
"amainst","anodest01","anodest02"
PS E:\images\vagrantbox\mybox> $newlist="amainst","anodest01","anodest02"
PS E:\images\vagrantbox\mybox> foreach ($svr in $seclist)
>> {
>> ttermpro /F=log.INI vagrant@$svr
>> }
PS E:\images\vagrantbox\mybox>
这里要说明一点就是powershell中对于变量,特别是带换行符的定义很严格。例如在LINUX shell中,你定义一个变量
Administrator@lyan-pc MINGW64 ~/Desktop/logdir
$ hostlist="host1
> host2
> host3"
Administrator@lyan-pc MINGW64 ~/Desktop/logdir
$ echo $hostlist
host1 host2 host3
Administrator@lyan-pc MINGW64 ~/Desktop/logdir
$ for host in $hostlist;do echo $host;done
host1
host2
host3
Administrator@lyan-pc MINGW64 ~/Desktop/logdir
$
如上,带回车符是可以直接循环的,但powershell会把回车符看成变量的一部分。如下
PS E:\images\vagrantbox\mybox> $svrlist
amainst
anodest01
anodest02
所以必须中间用一个新的变量来定义成一个数组,如下的$newlist,是必须你手动粘贴这两条命令的,这样才可以循环
PS E:\images\vagrantbox\mybox> $svrlist -replace "`n", "`",`"" -replace "^", "`"" -replace "$", "`""
"amainst","anodest01","anodest02"
PS E:\images\vagrantbox\mybox> $newlist="amainst","anodest01","anodest02"
这样以后你就可以同时登陆这几台服务器,遗憾的是密码还要你手动一台台输入(笑)
最后如何并行操作
image.png就是这个广播消息功能,但这个功能有个缺陷,每次只能输入一行,这就表示如果你需要输入一个带换行符的函数,对不起
不行。
今天就先到这里
网友评论