我必须关闭我的虚拟机,像垃圾收集器一样,我的脚本在数据库中找到虚拟机的名称,它是空的并准备关闭。如果回声是真的,我在输出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
答案 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)。