Evg*_*nko 7 google-cloud-platform gcloud
我从 shell 脚本创建 Google Cloud Compute 实例,然后通过 ssh 在该实例上启动多个命令。
如何保证实例中的操作系统正常运行?
例如:
gcloud compute instances create "$my_name" \
--tags "http-server" \
--image container-vm \
--metadata-from-file google-container-manifest="container.yml" \
--zone "$my_zone" \
--machine-type g1-small
然后我想跑
gcloud compute ssh \
"$my_name" --zone "$my_zone" \
--command 'sudo docker stop $(sudo docker ps -q -a)'
或者
gcloud compute copy-files \
some.conf root@"$my_name":/existing_dir/ \
--zone "$my_zone"
据我了解,如果实例未启动,第二个命令可能会因连接拒绝而失败。
如何确保实例已启动并准备好接受 ssh 连接?
只需在发送命令之前检查 SSH 端口是否打开即可。在实例操作系统启动之前,SSH 服务器不会启动:
IP=$(gcloud compute instances list | awk '/'$my_name'/ {print $5}')
if nc -w 1 -z $IP 22; then
echo "OK! Ready for heavy metal"
: Do your heavy metal work
else
echo "Maybe later?"
fi
Run Code Online (Sandbox Code Playgroud)
解释:
- 获取实例 $my_name 的 IP
- 检查端口 22 是否正在接受传入连接。
-w:连接超时(1秒就足够了)
-z:仅检查端口是否打开并立即退出
| 归档时间: |
|
| 查看次数: |
6698 次 |
| 最近记录: |