[英]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.