运行命令,直到获得bash值

时间:2018-11-01 06:35:39

标签: linux bash openstack

如何在命令获得价值之前运行命令?

我想在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命令对其进行测量。

怎么可能?

欢迎任何想法,可以更改所有内容以使其起作用:)

1 个答案:

答案 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