0

Я запускаю виртуальную машину Google Compute Engine из приложения App Engine. Стартовые скрипты для GCE VM запускают скрипты python, которые, в свою очередь, делают вызовы os.system для команд bdutil, , например.,Как заставить команду bdutil запускать как root?

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") 

я счел необходимым запускать эти скрипты как корень, например ,

sudo python script.py 

Опция --force deploy команда работает, как ожидалось, т.е., терминал оболочки показывает:

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

Однако другая подсказка входит:

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

Я нашел Мне нужно выполнить эти скрипты как root, но я также выполняю их удаленно и не могу ответить на терминал promp ц.

Как я могу заставить выполнение этой команды bdutil не отвечать на окончательное приглашение? Модификация исходного кода bdutil не является жизнеспособным вариантом.

+0

Простите за опоздание; для дальнейшего использования, добавление тега 'google-hadoop' может быстрее дойти до команды Hadoop. –

ответ

0

Спасибо за сообщение, это ошибка в bdutil, и в нормальных условиях мы действительно должны применять -f или --force флагов всех запросы на подтверждение, а не только стандартный Deploy/удалить подсказки. Я зарегистрировал 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") 
Смежные вопросы