RedHat 8.2如何使用APC给节点加压?
在执行APC脚本之前不得不吐槽一下网络环境搭建的未解之谜:本人笔记本和APC能互相ping通,笔记本也能和控制端服务器A互相ping通,但APC和控制端服务器A无法ping通.
后来发现APC和控制端服务器B能互相ping通,就暂且使用控制端服务器B通过APC下发命令给被控制端服务器C跑AC.
但在控制端服务器B执行脚本后.#sh Ac.sh,会提示如下错误:
./Ac.sh: ./Acoff.exp: /usr/bin/expect: 解释器错误: 没有那个文件或目录
./Ac.sh: ./Acon.exp: /usr/bin/expect: 解释器错误: 没有那个文件或目录
一开始猜测是Ac.sh脚本格式问题,但执行该命令后
#sed -i ‘s/\r$//’ Ac.sh,还是提示同样的错误:
./Ac.sh: ./Acoff.exp: /usr/bin/expect: 解释器错误: 没有那个文件或目录
./Ac.sh: ./Acon.exp: /usr/bin/expect: 解释器错误: 没有那个文件或目录
所以继续猜测,控制端是否安装expect?# rpm -qa | grep expect,返回信息为空,说明控制端没有安装expect. 使用
#yum -y install expect尝试安装expect,提示需联网下载如下软件包:
[MIRROR] expect-5.45.4-5.el8.x86_64.rpm: Curl error (6): Couldn’t resolve host name for https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Packages/expect-5.45.4-5.el8.x86_64.rpm [Could not resolve host: mirrors.aliyun.com]
[MIRROR] tcl-8.6.8-2.el8.x86_64.rpm: Curl error (6): Couldn’t resolve host name for https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Packages/tcl-8.6.8-2.el8.x86_64.rpm [Could not resolve host: mirrors.aliyun.com]
由于联网安装expect和tcl之前需要安装yum,且在Redhat8.2镜像\AppStream\Packages目录中找不到expect和tcl package,这里我就直接参照上图中的网址提示下载CentOS expect和tcl package至本地安装(一定要加 --nodeps).
网址链接:
http://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Packages/
.# rpm -ivh expect-5.45.4-5.el8.x86_64.rpm --nodeps
.# rpm -ivh tcl-8.6.8-2.el8.x86_64.rpm --nodeps
安装expect后,再次执行#sh Ac.sh,不会提示"/usr/bin/expect"的错误了,这让我很开心,感觉离成功又进了一步,可偏偏又出现新的报错,提示"couldn’t execute “telnet”: no such file or directory",由于APC端telnet是enabled,而telnet需要双向开启,所以猜测控制端是否开启telnet服务:# rpm -qa | grep telnet,返回信息为空,说明控制端telnet服务没有开启.
同样,可在Redhat8.2镜像\AppStream\Packages目录中将"telnet-0.17-73.el8.x86_64.rpm"拷贝至控制端并安装:#rpm -ivh telnet-0.17-73.el8.x86_64.rpm --nodeps
安装完expect和telnet后查看是否安装成功:
.# rpm -qa | grep expect
.# rpm -qa | grep telnet
.# cd /usr/bin
.# pwd
.# ls | grep expect
.# ls | grep telnet
expect和telnet安装成功后再次执行#sh Ac.sh,可以看到脚本已经开始跑起来了.
感觉自己萌萌哒~