From 89db85dbf97f4a2aeaeb57907a691679e5ae87c5 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Tue, 4 Sep 2018 22:46:55 -0700 Subject: [PATCH] Work around concurrent |gcloud compute ssh| terminal issue --- net/gce.sh | 4 ++-- scripts/gcloud.sh | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/net/gce.sh b/net/gce.sh index 02a5153f2..791958459 100755 --- a/net/gce.sh +++ b/net/gce.sh @@ -158,10 +158,10 @@ EOF echo "clientIpList=()" >> "$configFile" echo "Looking for client instances..." gcloud_FindInstances "name~^$prefix-client" show - if [[ ${#instances[@]} -gt 0 ]]; then + [[ ${#instances[@]} -eq 0 ]] || { gcloud_PrepInstancesForSsh "$gcloud_username" "$sshPrivateKey" gcloud_ForEachInstance recordInstanceIp clientIpList - fi + } echo "Wrote $configFile" } diff --git a/scripts/gcloud.sh b/scripts/gcloud.sh index bd8ddc5f3..a5927d555 100644 --- a/scripts/gcloud.sh +++ b/scripts/gcloud.sh @@ -241,6 +241,10 @@ gcloud_PrepInstancesForSsh() { IFS=: read -r name zone publicIp _ < <(echo "$instanceInfo") logFile="$logDir/gcloud_PrepInstancesForSsh-$name.log" + + # TODO: This next subshell runs in series because for unknown reason running + # multiple |gcloud compute ssh| commands in parallel cause the macOS + # terminal to misbehave ( set -x @@ -260,12 +264,15 @@ gcloud_PrepInstancesForSsh() { StrictHostKeyChecking no \" > .ssh/config; " + ) >> "$logFile" 2>&1 + ( + set -x scp \ -o StrictHostKeyChecking=no \ -o UserKnownHostsFile=/dev/null \ -i "$privateKey" \ "$privateKey" "$username@$publicIp:.ssh/id_testnet" - ) > "$logFile" 2>&1 & + ) >> "$logFile" 2>&1 & declare pid=$! ln -sfT "$logFile" "$logDir/gcloud_PrepInstancesForSsh-$pid.log"