在bash中执行gcloud命令

时间:2019-02-27 07:28:01

标签: bash google-cloud-platform gcloud

在无奈之下来到这里之前,我已经花了3天时间对这个问题be之以鼻。

长话短说,我以为我会启动一个简单的PHP网站,以允许游戏组的主持人按需启动GCP服务器。我不是开发人员,所以我从系统的角度进行研究,以找到最简单的解决方案来完成这项工作。

我在GCP上启动了一台Ubuntu 18.04计算机,并使用Google SDK对其进行了设置,授权它可以访问该项目,并且能够简单地运行运行良好的gcloud命令。 PHP文件调用shell脚本以运行相同的命令时出现了一些问题,但是通过一些测试,我可以看到现在每次我单击PHP页面上的按钮时都可以调用shell脚本来进行管理(无需担心(它会广播墙“测试”))

但是,执行gcloud命令并不会发生。如果我手动运行此Shell脚本,它将启动实例,而无需担心,并且会广播墙,如果单击按钮,它将广播但仅此而已。我已经将文件设置为具有执行权限,甚至添加了用户nginx运行以具有sudo权限,将sudo sh放在PHP文件中的命令前面也没有任何区别。请在下面找到bash脚本:

    #!/bin/bash

    /usr/lib/google-cloud-sdk/bin/gcloud compute instances start arma3s1-prod --zone=australia-southeast1-b

    wall "test"

任何帮助将不胜感激,再加上自动关闭功能,将使我们的游戏集团仅通过运行人们想要玩的服务器来节省金钱。

您需要有关底层系统的更多详细信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

因此,我向工作中的PHP开发人员询问了这一点,在两秒钟的时间里,她指出了问题,现在我感到很愚蠢。在/ etc / passwd中,www数据用户使用了/ usr / sbin / nologin,在我修复了运行脚本gcloud后,希望获得将日志文件写入/ var / www的权限。修复了这些问题,并且效果很好。我并不担心页面甚至服务器被黑客入侵和破坏,我可以很轻松地重新创建它们。

不过,谢谢您的帮助!有时我认为我只需要退后一步,对这个问题有了新的认识。

答案 1 :(得分:0)

登录后启动命令时,您具有对Google Cloud API的帐户访问权限,但PHP帐户没有这些权限。

即使将www-data用户添加到root用户,也无法解决问题,也许会创建一些安全问题,但仅此而已。

如果您确实要执行此操作,则应创建一个服务帐户,并将json赋予env变量GOOGLE_APPLICATION_CREDENTIALS,该变量仅对项目内部的计算实例具有权限,因此您的PHP应该具有足够的权限来执行操作你在问他。

请注意,此方法的问题在于,如果您被黑客入侵,则存在更改,也可以删除托管您的PHP的实例。

您还可以尝试调用准备好的云功能,它将以这种方式创建实例,即使您的实例被删除,云功能仍会存在。