【发布时间】:2018-07-07 03:41:09
【问题描述】:
我正在尝试创建 shell 脚本,它将在一个 VM 中设置 Zookeeper Server,并在不同 VM 中设置相应的 Zookeeper 客户端,所以我编写了一个如下所示的 shell 脚本
#!/bin/bash
ZOOKEEPER_SERVER_IP="1.2.3.4"
while read ipaddress zookeepertype number
do
echo -e "Setting up the Zookeepers \n"
echo $ipaddress
if [ "${zookeepertype}" = 'zookeeperserver' ]; then
echo "Setup Zookeeper Server"
#ZOOKEEPER_SERVER_IP = $ipaddress
#echo $ZOOKEEPER_SERVER_IP
#echo $ipaddress
sudo scp -i /home/ubuntu/.ssh/fd -r /home/ubuntu/ZooKeeper_Server_Script.sh ubuntu@$ipaddress:/home/ubuntu/
ssh -i /home/ubuntu/.ssh/fd ubuntu@$ipaddress /home/ubuntu/ZooKeeper_Server_Script.sh
echo "This script is about to run ZooKeeper_Server_Script."
echo "The server script has completed.";
#sleep 30
exit 1
fi
echo -e $ZOOKEEPER_SERVER_IP
if [ $zookeepertype = "zookeeperclient" ] ; then
echo "Setup Zookeeper Client"
echo $ipaddress
sudo scp -i /home/ubuntu/.ssh/fd -r /home/ubuntu/ZooKeeper_Client_Script.sh ubuntu@$ipaddress:/home/ubuntu/
ssh -i /home/ubuntu/.ssh/fd ubuntu@$ipaddress
#mkdir /home/ubuntu/keyfiles
#exit
#sudo scp -i /home/ubuntu/.ssh/fd -r /home/ubuntu/abc/network/test/keyfiles/* ubuntu@$ipaddress:/home/ubuntu/keyfiles
#sudo scp -i /home/ubuntu/.ssh/fd -r /home/ubuntu/abc/test/simple/abc.json ubuntu@$ipaddress:/home/ubuntu/
#ssh -i /home/ubuntu/.ssh/fd ubuntu@$ipaddress
#chmod 777 ZooKeeper_Client_Script.sh
#echo "This script is about to run ZooKeeper_Client_Script."
#sh ./ZooKeeper_Client_Script.sh $ZOOKEEPER_SERVER_IP
echo "The client script has completed."
#exit
fi
#Separating Runhosts File
done < setupZkinput.txt
输入文件是 1.2.3.4 动物园管理员服务器 1 5.6.7.8 动物园管理员客户端2 9.10.11.12 zookeeperclient 3
我面临的问题是
1) 只有服务器设置正在完成,即脚本在第一行之后退出 2) 无法动态分配服务器 ip,在 ZOOKEEPER_SERVER_IP = $ipaddress 行中
谢谢
【问题讨论】:
-
我试图删除第一个 if 循环,然后第二个循环被执行但只有一次,尽管它必须执行多次。
-
如果我评论 shell 脚本的执行,那么它会打印所有的 ip 地址并且整个循环完成,如果我在一个脚本执行完成后启用它就会停止