Bash为大规模执行中的所有元素关闭

时间:2014-05-15 07:30:57

标签: mysql bash

我必须关闭我的虚拟机,像垃圾收集器一样,我的脚本在数据库中找到虚拟机的名称,它是空的并准备关闭。如果回声是真的,我在输出vm输出的大量名称时会遇到麻烦,但是当我试图关闭它时,它只需要一个质量的elenent并且没有路径变量。

如何关闭大规模的所有元素?并将vm的名称路径指向属性?

arr1=($(/usr/bin/mysql --skip-column-names -u $DB_USER  -p$DB_PASS $DB -e "SELECT VM_NAME FROM VM_LIST Where     BUSY="0" AND POOL='LINUX';"))
echo ${#arr1[@]} 

if arr1 -gt 0

then 

for availiable_node in "${arr1[@]}"
do
shutdown $availiable_node
echo $availiable_node

1 个答案:

答案 0 :(得分:0)

虽然我无法理解一切,但如果有人想做这样的活动, 应该是这样的:

#!/bin/bash
vmNode=(db query )

for node in ${vmNode[*]}
do 

echo $node
ssh user@${node} "sudo shutdown -h now" #user should be same on all nodes.
                                        # sudo use is subject to requirement

done

此要求:

1)ssh应该是无密码的

2)sudo应该是无密码的,不需要tty

如果sudo or ssh不是密码,

解决方案仍然有用,但您必须为eveynode输入密码2次,ssh输入密码,然后输入sudo

3)您从中触发此脚本的节点应该是vmNode数组中的最后一个或不应该存在。

4)如果查询正在获取节点主机名,则应在/etc/hosts~/.ssh/known_hosts

中配置它们

这仅适用于OS关闭(* nix)。