【问题标题】:Calling multiple shell scripts within a script on different virtual machines在不同虚拟机上的脚本中调用多个 shell 脚本
【发布时间】: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 地址并且整个循环完成,如果我在一个脚本执行完成后启用它就会停止

标签: linux shell ubuntu


【解决方案1】:

将文件复制到服务器后,您设置的默认权限是什么? 请记住,它需要执行权限才能执行脚本。

【讨论】:

  • 脚本在第一个服务器上执行,但在其他服务器上没有执行就退出了,第一个脚本执行后while循环终止
  • 我在循环中看到了退出,我认为这就是原因,它正在被终止。 echo "服务器脚本已完成。"; #sleep 30 出口 1
  • 您能否提供执行代码后的示例输出?
猜你喜欢
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 2021-07-10
  • 2022-12-09
相关资源
最近更新 更多