簡體   English   中英

gcloud 在遠程實例上執行命令未按預期工作

[英]gcloud execute commands on remote instance not working as expected

我是 gcp 和 gcloud 命令的新手。 我正在嘗試運行以下 -

[root@localhost ~]# gcloud compute ssh test --zone=us-central1-a --command=DISK_DEV=`lsblk | grep -i 10g | awk '{print $1}'` ; echo $DISK_DEV

[root@localhost ~]# gcloud compute ssh test --zone=us-central1-a --command="DISK_DEV=`lsblk | grep -i 10g | awk '{print $1}'` ; echo $DISK_DEV"

並且它沒有返回預期的 output (因為它返回 null 而不是相關設備)。

如果我在遠程實例上運行它,相同的命令會返回預期的 output (設備) -

[root@test ~]# DISK_DEV=`lsblk | grep -i 10g | awk '{print $1}'` ; echo $DISK_DEV
sdb

請指教,謝謝。

gcloud在您的本地主機上運行並調用遠程主機上的命令。

您正在嘗試在本地主機上設置環境變量 ( DISK_DEV ) 以反映遠程主機上的值。 這行不通。

您的命令在語法上也不正確; 你不能--command=[VAR]="..."

請參閱: https://cloud.google.com/sdk/gcloud/reference/compute/ssh#--command

讓它工作的唯一方法是運行命令lsblk | grep -i 10g | awk '{print $1}' lsblk | grep -i 10g | awk '{print $1}' lsblk | grep -i 10g | awk '{print $1}'並捕獲gcloud命令的 output 然后解析:

RESULT="$(gcloud ... --command='lsblk ...')"

我沒有簡單的方法來測試上述內容,但 RESULT可能包含來自需要修剪的遠程 shell 的其他數據。

更新

這有效:

COMMAND="lsblk | grep -i 10g"

RESULT=$(\
  gcloud compute ssh ${INSTANCE} \
  --zone=${ZONE} \
  --project=${PROJECT} \
  --command="${COMMAND}")

DISK_DEV=$(echo ${RESULT} | awk '{print $1}')
echo ${DISK_DEV}
sda

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM