shell脚本中所执行的命令需要手动回车时,可在命令后加 & 处理:
例如: 对于脚本中初始化Redis服务的命令需要手动回车,可在脚本中做如下处理
echo | /root/redis-4.0.8/utils/install_server.sh
#!/bin/bash
#********************************************
# 2019.12.17 Zz-sun *
#********************************************
#定义变量
x=ABCDEF #主机变量
ip=192.168.4. #ip网段
for i in {51..56}
do
#********** 传送软件 **************#
echo "scp soft......"
scp /linux-soft/03/redis/redis-4.0.8.tar.gz root@$ip$i:/root/ &> /dev/null
echo "HOST $ip$i : scp soft already!"
#********** 安装redis依赖包,解压redis源码包 ***********#
echo "redis is installing......"
ssh root@$ip$i " tar -zvxf /root/redis-4.0.8.tar.gz;
cd redis-4.0.8;
make && make install" &> /dev/null
echo "HOST $ip$i : redis has install !"
#********** 初始化redis服务 跳过手动回车 ************#
ssh root@$ip$i " echo | /root/redis-4.0.8/utils/install_server.sh " &> /dev/null
echo "HOST $ip$i : redis-init has already!"
#********** 修改主配置文件 ************#
ssh root@$ip$i " sed -i '70s/.*/bind 192.168.4.$i/' /etc/redis/6379.conf;
sed -i '93s/.*/port 63$i/' /etc/redis/6379.conf" &> /dev/null
#********** 修改服务脚本文件 ************#
ssh root@$ip$i "sed -i '46s/.*/\$CLIEXEC -h 192.168.4.$i -p 63$i shutdown/' /etc/init.d/redis_6379" &> /dev/null
#********** 主机名修改 ********************#
b=$[i%10-1] #匹配主机位
a=${x:$b:1}
ssh root@$ip$i " hostnamectl set-hostname redis$a; hostname redis$a"
echo "HOST $ip$i is successful !!"
done
echo "already!!"