
我正在嘗試使用 CircleCI 透過 SSH 連接到我的 Compute Engine 實例,其命令在 config.yml 中如下所示:
gcloud --quiet compute ssh [INSTANCE_NAME] --zone northamerica-northeast1-a --project [PROJECT_NAME] cd /var/www/dev
我可以成功進行身份驗證並在 CircleCI 日誌中看到命令提示字元。但是,SSH之後的命令並沒有被執行。我在這裡做錯了什麼?
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Sep 12 15:53:55 2018 from 18.212.180.159
[USER_NAME]:~$
我希望在身份驗證成功後運行 cd 命令。
答案1
使用 SSH,似乎您無法僅透過傳遞命令來更改目錄,這是 SSH 的限制伺服器故障後。通常,您可以透過使用 flag 來使用 SSH 運行可執行文件-c
,類似地使用--command
與 gcloud 類似這個例子。
gcloud compute ssh --zone=us-east1-c test --command="nohup ping -i 5 google.com > foo.out 2> foo.err < /dev/null &"
-t
然而,從上面的伺服器故障貼文來看,除了在一個語句中執行多個命令之外,似乎還可以透過使用標誌來實現更改目錄。幸運的是,gcloud 也可以透過添加來使用此類標誌--ssh-flag
。這是更改目錄並輸出系統路徑的範例。
gcloud compute ssh --zone=us-central1-c instance-2 --ssh-flag="-t" --command="cd /bin; pwd"
/bin
Connection to xx.xx.xx.xx closed.
pwd
請注意,執行最後一個指令後,SSH 將退出(連線關閉) 。若要保持登入狀態並按照貼文中的建議使用bash --login
我不確定在circleCI中如何運行命令,但通常要在linux中運行命令,您可以直接指定完整路徑,而不是更改目錄。例如,/some/directory/executablefile
將運行executablefile
.