如何在命令获得价值之前运行命令?
我想在openstack中生成一个vm-s,我想测量在第一次ping成功之前需要花费多少秒。
我有以下命令,它将产生一个spawningtestlin机器:
nova boot --image "imagename" --flavor m2.large --nic net-id=87y38788 --availability-zone vlan:asd055 spawningtestlin
我要使用以下命令获取机器的IP地址后:
machineip=$(nova list --name spawningtestlin|grep spawningtestlin|awk -F= '{print $2}'|awk '{print $1}'|sed 's/ //g')
问题在于获取ip需要花费一些时间,因此machineip值多次为空,但是返回代码为0。所以我希望脚本仅在具有值的情况下继续。
然后会出现这种情况,直到第一次ping到达:
until ping -c1 $machineip &>/dev/null; do :; done
这将是脚本,运行脚本时,我会使用time命令对其进行测量。
怎么可能?
欢迎任何想法,可以更改所有内容以使其起作用:)
答案 0 :(得分:0)
这终于是脚本了,我不得不使用直到,它才能起作用:
> /var/tmp/machineip
touch /var/tmp/machineip
nova boot --image "ewefewf" --flavor m2.large --nic net-id=wefewf --availability-zone LA2:s55 spawningtestwin
until grep "1" /var/tmp/machineip > /dev/null;
do
nova list --name spawningtestwin|grep spawningtestwin|awk -F= '{print $2}'|awk '{print $1}'|sed 's/ //g' > /var/tmp/machineip
done
mip=$(cat /var/tmp/machineip)
until ping -c1 $mip &>/dev/null; do :; done
end=`date +%s`
runtime=$((end-start))
echo $runtime