Команда запуска Azure CLI вызывает runshellscript — как получить выходные данные сценария оболочки

Я запускаю команду в Azure-конвейере

az vm run-command invoke --command-id RunShellScript --name DevServer -g Takeoffs --scripts "cd /home/user/workdir/project/ && bash ./buildDev.sh > /home/user/workdir/project/exlogs.txt"

Этот сценарий оболочки имеет разные коды завершения для разных ошибок.

Я хотел бы иметь возможность их поймать.

Похоже, что выходные данные, которые я могу уловить, - это выходные данные «вызова команды запуска az vm», но коды завершения фактического сценария оболочки потеряны.

Как я могу получить код выхода?

Я попытался получить вывод команды примерно так:

command_output=$(az vm run-command invoke --command-id RunShellScript --name AIDevServer -g Takeoffs --scripts "cd /home/aiadmin/workdir/wall_classification/ && bash ./buildDev.sh > /home/aiadmin/workdir/wall_classification/exlogs.txt" -o json)
echo "Command output: $command_output"

Но это дает только выходные данные команды запуска az vm, а не код завершения базового сценария оболочки.

Я сделал что-то еще, чтобы обойти эту проблему: мой скрипт теперь создает разные файлы в облаке, поэтому я могу проверить файлы и посмотреть, что произошло, не проверяя код выхода.

Patrick Grenier 09.04.2024 18:03

Вы можете добавить новый ответ, чтобы поделиться обходным путем решения проблемы. Тогда вы можете принять ответ. Это будет полезно другим пользователям, у которых возникла такая же проблема.

Kevin Lu-MSFT 09.04.2024 18:14

Ну это не совсем полезно. Просто я отказался от кодов выхода и мне пришлось запрограммировать своего рода систему связи через файлы, чтобы выяснить, какой выход выбрал мой сценарий.

Patrick Grenier 10.04.2024 20:24

Да. Таким образом, основная причина этой проблемы заключается в том, что команда запуска az vm не поддерживает возврат кодов выхода, как указано в моем ответе. Вы можете оставить отзыв в сообщении GitHub, упомянутом в ответе.

Kevin Lu-MSFT 11.04.2024 07:55
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
4
254
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Могу воспроизвести ту же ситуацию. При использовании команды: az vm run-command ignore отображается только сообщение о результате команды без кода выхода.

Например:

Это ограничение самого Azure Cli.

Боюсь, что команда az vm run-command invoke не поддерживает вывод кода завершения результата команды.

Вот билет предложения на Github: Поддержка отчетов о коде выхода в az run-command ignore Вы можете отслеживать билет предложения и добавлять комментарии, чтобы поделиться своими идеями.

В качестве обходного пути вы можете использовать задачу SSH в конвейере Azure для запуска сценария оболочки на виртуальной машине Azure.

Он будет использовать SSH для подключения к виртуальной машине Azure для запуска сценария оболочки. И вы можете увидеть код выхода.

Например:

- task: SSH@0
  inputs:
    sshEndpoint: 'test0405ssh'
    runOptions: 'inline'
    inline: |
      cd /home/aiadmin/workdir/wall_classification/ && bash ./buildDev.sh > /home/aiadmin/workdir/wall_classification/exlogs.txt
      echo $?
    readyTimeout: '20000'

Результат:

Другие вопросы по теме

Похожие вопросы

Портал Azure: как настроить идентификатор клиента и секрет клиента
Выбор динамической группы переменных на основе триггерного репозитория
Получает ошибку в коде Azure terraform: данный сервер не поддерживает функцию частной конечной точки. пожалуйста, создайте новый сервер с поддержкой частной конечной точки
Как отправить сообщение на устройство с самоподписанным сертификатом в качестве аутентификации в Azure IoT Hub через REST API
Регистрация приложения Azure ограничивает доступ к секрету/сертификату клиента
Виртуальная машина Azure — программный запуск и остановка машины
Как создать несколько конвейеров Azure Devops, вызывая объекты из одного или нескольких файлов CSV?
Почему на моих страницах входа/регистрации Azure B2C переведена только половина слов?
Пиринг виртуальных сетей и конечные точки служб: как разрешить взаимодействие двух служб приложений Azure
Azure Log Analytics разрешает доступ только к одной конкретной таблице