如何在crontab-e的bash脚本中执行gcloud命令

如何在crontab-e的bash脚本中执行gcloud命令,bash,cron,gcloud,cron-task,crontrigger,Bash,Cron,Gcloud,Cron Task,Crontrigger,我正在尝试从crontab执行bash脚本中的一些gcloud命令。脚本从命令shell成功执行,但未从cron作业成功执行 我试过: 设置gcloud的完整路径,如: /etc/bash_completion.d/gcloud /home/Arturo/.config/gcloud /usr/bin/gcloud /usr/lib/google-cloud-sdk/bin/gcloud 在“开始脚本”对话框中设置: /bin/bash -l 在crontab中设置: 51

我正在尝试从crontab执行bash脚本中的一些gcloud命令。脚本从命令shell成功执行,但未从cron作业成功执行

我试过:

  • 设置gcloud的完整路径,如:

     /etc/bash_completion.d/gcloud
     /home/Arturo/.config/gcloud
     /usr/bin/gcloud
     /usr/lib/google-cloud-sdk/bin/gcloud
    
  • 在“开始脚本”对话框中设置:

      /bin/bash -l
    
  • 在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`
    
  • 脚本内部的设置:

    export-CLOUDSDK\u-PYTHON=/usr/bin/python2.7

  • 脚本内部的设置:

    sudo ln-s/home/myuser/googlecloudsdk/bin/gcloud/usr/bin/gcloud

  • Ubuntu版本18.04.3 LTS 要执行的命令:
    gcloud config set project myproject


    但是什么都没用,也许我做错了什么。我希望您能帮助我。

    您需要在crontab中设置您的用户,以便它运行gcloud命令。正如在另一篇文章中所解释的那样,您需要修改crontab以获取云SDK中的数据,以便正确执行—您似乎没有进行此配置

    我建议您尝试的另一个选项是,使用云调度器来运行gcloud命令。这样,您就可以以更集成、更简单的方式将gcloud用于cron作业。您可以在此处验证有关此选项的更多信息:


    如果这些信息对你有帮助,请告诉我

    我发现了我的错误,这里的问题只是在命令“gcloud dns record sets transaction start”中,其他命令正在成功执行,但没有记录任何内容,因此我认为没有执行其他命令。此命令创建一个临时文件ex.transaction.yaml,该文件无法在gcloud的默认路径(snap/bin)中创建,但日志根本不会写入任何内容!。我必须用标志--transaction file=mytransaction.yaml指定该文件的路径和名称。谢谢你的支持和建议

    我以前也遇到过同样的问题。我通过强制将概要文件加载到我的script.sh中,加载gcloud环境变量来修复它。示例如下:

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

    我希望这可以帮助将来遇到类似问题的其他人,因为这也帮助了我在计划中从0到4设置GKE节点。

    在shell脚本中添加以下行修复了我的问题

    #执行用户配置文件


    source/root/.bash\u profile

    是否为您设置的cron用户在您的路径中设置了gcloud?抱歉,我错过了sudo ln。。。哪个应该有效。但是,请记住,不会对您进行身份验证…cron环境不会使用
    gcloud init
    进行身份验证,因此您需要开始运行能够对gcloud进行身份验证的程序,使用服务帐户可能是最好的方法。我执行的第一个命令是:gcloud auth activate service account--key file=fileauth.json。如何检查gcloud是否位于cron中用户的路径中?我需要在之前运行“gcloud init”吗?如果您正在使用gcloud auth activate服务帐户,则不需要运行gcloud init,这就足够了。但是您仍然需要设置项目。可能是这样吗?需要在激活服务帐户调用后运行
    gcloud config set project my_project
    。我发现了错误,这里的问题只是命令:“gcloud dns record set transaction start”,其他命令正在成功执行,但没有记录任何内容,因此我认为没有执行其他命令。此命令创建一个临时文件ex.transaction.yaml,该文件无法在gcloud的默认路径(snap/bin)中创建,但日志根本不会写入任何内容!。我必须用标志--transaction file=mytransaction.yaml指定该文件的路径和名称。感谢您的支持和支持,我读了gso_gabriel的文章,但没有使用“crontab-u myuser-e”的结果是一样的。我读了关于cron调度器的文章,但似乎我需要知道一些语言来完成它,这只是一个bash脚本。我只接受函数、发布/订阅和应用程序引擎我发现了错误,这里的问题只是命令:“gcloud dns record sets transaction start”,其他命令执行成功,但没有记录任何内容,因此我认为没有执行其他命令。此命令创建一个临时文件ex.transaction.yaml,该文件无法在gcloud的默认路径(snap/bin)中创建,但日志根本不会写入任何内容!。我必须用标志--transaction file=mytransaction.yaml指定该文件的路径和名称。谢谢你的支持和想法很高兴听到它帮助了你!请考虑一下我的回答,如果你认为它对你有帮助的话。