【问题标题】:How to force bdutil command to run as root?如何强制 bdutil 命令以 root 身份运行?
【发布时间】:2015-04-24 20:29:36
【问题描述】:

我正在从 App Engine 应用程序启动 Google Compute Engine VM。 GCE VM 的启动脚本运行 python 脚本,这些脚本反过来使 os.system 调用 bdutil 命令,例如

os.system("bdutil --bucket <BUCKET> --num_workers 1 "
          "--env_var_files hadoop2_env.sh --default_fs hdfs "
          "--zone us-central1-b --prefix <NAME> --force deploy")

我发现有必要以 root 身份运行这些脚本,例如

sudo python script.py

--force deploy 命令选项按预期工作,,shell 终端显示:

Deploy cluster with following settings?
....
(y/n) y

但是,包含另一个提示:

Are you sure you want to run the command as root? (y/n)

我发现我需要以 root 身份执行这些脚本,但我也在远程执行它们,无法响应终端提示。

如何在不响应最终提示的情况下强制执行此 bdutil 命令?修改 bdutil 源代码不是一个可行的选择。

【问题讨论】:

  • 抱歉耽搁了;为了将来参考,添加 google-hadoop 标签可能会更快地到达 Hadoop 团队。

标签: python google-app-engine google-compute-engine google-hadoop


【解决方案1】:

感谢报告,这是bdutil 中的一个错误,在正常情况下,我们确实应该将-f--force 标志应用于所有确认提示,而不仅仅是标准的部署/删除提示。我已提交https://github.com/GoogleCloudPlatform/bdutil/issues/31 以跟踪此问题。

与此同时,您应该能够使用 linux yes 命令解决此问题,该命令通常用作不直接包含此类标志的命令的临时 --force 标志:

os.system("yes | bdutil --bucket <BUCKET> --num_workers 1 "
          "--env_var_files hadoop2_env.sh --default_fs hdfs "
          "--zone us-central1-b --prefix <NAME> --force deploy")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2022-11-25
    • 2012-07-19
    相关资源
    最近更新 更多