bash - 在 bash 中执行 gcloud 命令
问题描述
在绝望地来到这里之前,我已经花了 3 天的时间来反对这个。
长话短说,我想我会启动一个简单的 PHP 网站,让游戏组的版主能够按需启动 GCP 服务器。我不是开发人员,所以我从系统的角度来看这个,以找到最简单的解决方案来完成这项工作。
我在 GCP 上启动了一台 Ubuntu 18.04 机器,并使用 Google SDK 对其进行设置,授权它访问该项目,并且能够简单地运行运行良好的 gcloud 命令。调用 shell 脚本以运行相同命令的 PHP 文件存在一些问题,但通过一些测试,我可以看到它现在调用 shell 脚本,不用担心(它会广播墙“测试”)来控制台每次单击 PHP 页面上的按钮.
然而,没有发生的是 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"
任何帮助将不胜感激,再加上自动关闭将使我们的游戏组仅通过运行人们想要玩的服务器来节省资金。
您想了解有关底层系统的更多详细信息,请告诉我。
解决方案
所以我向工作中的 PHP 开发人员询问了这个问题,两秒钟后她就指出了这个问题,现在我觉得很愚蠢。在 /etc/passwd 中,www-data 用户拥有 /usr/sbin/nologin,在我修复了运行脚本后,gcloud 需要将日志文件写入 /var/www 的权限。修复了这些,它工作正常。我并不十分担心页面甚至服务器被黑客攻击和破坏,我可以很容易地重新创建它们。
不过感谢您的帮助!有时我想我只需要退后一步,重新审视这个问题。
推荐阅读
- amazon-web-services - 尽管 CloudWatch 代理正在运行,但缺少 CloudWatch 日志组
- database - MongoDB 如何从 $lookup 远程集合中 $project(限制字段)?
- javascript - ConstantSourceNode 设置的振荡器频率错误
- jquery - 如何在列表框中选择一个值并将其与其 optgroup 标签克隆到另一个列表框
- python - 如何使小部件随 PyQt5 中的窗口缩放?
- clojure - 在 Clojure 中使用 Java 哈希图
- machine-learning - Keras 中两次损失的总和(感知和 MSE)
- android - 访问 zzbgl 并覆盖已弃用的 API 时出错
- javascript - 使用 node.js 更正了大型 RESTful API 的可扩展结构
- go - 如何使用 Golang big.Int 计算`x^3 + ax + b mod p`