簡體   English   中英

如何從 crontab -e 在 bash 腳本中執行 gcloud 命令

[英]How to execute gcloud command in bash script from crontab -e

我正在嘗試在 crontab 的 bash 腳本中執行一些 gcloud 命令。 該腳本從命令 shell 成功執行,但不是從 cron 作業執行。

我嘗試過:

  1. 設置 gcloud 的完整路徑,例如:

     /etc/bash_completion.d/gcloud /home/Arturo/.config/gcloud /usr/bin/gcloud /usr/lib/google-cloud-sdk/bin/gcloud
  2. 在開始腳本中設置:

     /bin/bash -l
  3. 在 crontab 中設置:

     51 21 30 5 6 CLOUDSDK_PYTHON=/usr/bin/python2.7; /home/myuser/folder1/myscript.sh param1 param2 param3 -f >> /home/myuser/folder1/mylog.txt`
  4. 腳本內部設置:

    export CLOUDSDK_PYTHON=/usr/bin/python2.7

  5. 腳本內部設置:

    sudo ln -s /home/myuser/google-cloud-sdk/bin/gcloud /usr/bin/gcloud

版本 Ubuntu 18.04.3 LTS 命令執行: gcloud config set project myproject

但沒有任何效果,也許我做錯了什么。 我希望你能幫助我。

您需要在 crontab 中設置您的用戶,以便它運行 gcloud 命令。 正如此處其他帖子中所解釋的那樣,您需要修改 crontab 以獲取 Cloud SDK 中的數據,以便正確執行 - 您似乎沒有進行此配置。

我建議您嘗試的另一個選項,它使用 Cloud Scheduler 來運行您的 gcloud 命令。 這樣,您可以以更集成和更簡單的方式將 gcloud 用於您的 cron 作業。 您可以在此處驗證有關此選項的更多信息:創建和配置 cron 作業

讓我知道這些信息是否對您有幫助!

我發現了我的錯誤,這里的問題只出在命令中:“gcloud dns 記錄集事務啟動”,其他命令正在成功執行,但只有沒有記錄任何內容,盡管我沒有執行其他命令。 此命令創建一個臨時文件 ex。 transaction.yaml 並且無法在 gcloud(snap/bin) 的默認路徑中創建該文件,但日志根本不寫任何東西。我必須使用標志 --transaction- 指定該文件的路徑和名稱文件=mytransaction.yaml。 感謝您的支持和想法

我以前遇到過同樣的問題。 我通過強制配置文件加載到我的 script.sh 中來修復它,並使用它加載 gcloud 環境變量。 下面的例子:

#!/bin/bash
source /etc/profile
gcloud config set project myprojectecho 
echo "Project set to myprojectecho."

我希望這可以在將來幫助其他人解決類似的問題,因為這在嘗試按計划將 GKE 節點設置為 0-4 時也對我有所幫助。

將以下行添加到 shell 腳本解決了我的問題

#執行用戶配置文件

源 /root/.bash_profile

暫無
暫無

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

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