gpt4 book ai didi

python - Azure Batch Linux vm运行脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:40 26 4
gpt4 key购买 nike

我正在尝试通过创建 Linux 虚拟机来使用 Azure 批处理服务。我有一些使用 python 的计算。为了安装一些 python 包,我已将安装命令放在脚本文件中并尝试在启动时运行它。

 pool.StartTask = new StartTask
{
// Specify a command line for the StartTask that copies the task application files to th
CommandLine = "bash -c \"bash /mnt/batch/tasks/startup/wd/installpackages.sh\"",
ResourceFiles = resourceFiles,
WaitForSuccess = true,
MaxTaskRetryCount = 5
};

由于权限问题,此脚本执行失败。当我尝试使用“sudo”运行脚本时,出现以下错误,

sudo: no tty present and no askpass program specified

该脚本由用户“_azbatch”执行,并在使用 sudo 时提示输入我不知道的密码。

如何克服这个问题?

最佳答案

如果您使用的是 Azure Batch C# SDK 6.0.0 或更高版本(或 Azure Batch Python SDK 2.0.0 或更高版本),则需要在 StartTask 中指定正确的 UserIdentity 对象。

pool.StartTask.UserIdentity = new UserIdentity(
new AutoUserSpecification(
scope: AutoUserScope.Pool,
elevationLevel: ElevationLevel.Admin
)
)

如果您使用的是上述版本之前的 SDK 版本,则需要将 StartTask 对象 RunElevated 成员设置为 true

使用这些选项,您应该从脚本中删除 sudo,因为您的脚本将自动以 super 用户或管理权限运行。

关于以下内容的附加说明:

/mnt/batch/tasks/startup/wd/installpackages.sh

您永远不应该直接引用该路径。您可以改为使用:

bash -c "bash $AZ_BATCH_TASK_WORKING_DIR/installpackages.sh"

或者简单地说:

bash ./installpackages.sh

您甚至可以通过在 shell 脚本顶部添加适当的 shebang 语句并以 ./installpackages.sh 形式调用来删除 bash 显式调用。

批处理会将当前工作目录设置为任务的工作目录以执行命令。您可以查看Batch为任务执行自动设置的所有环境变量here .

关于python - Azure Batch Linux vm运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43465858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com