Автор Тема: Остановка (завершение) работы нескольких Virtual Box...  (Прочитано 3315 раз)

Оффлайн San

  • Давно тут
  • **
  • Сообщений: 664
Помогите пожалуйста!

Не получается написать строку для одновременного завершения работы нескольких гостевых Virtual Box.

Получаю список гостевых машин:
VBoxManage list runningvms
Даю команду на отключение:
VBoxManage controlvm {6e5598ec-ff94-45fb-8a44-716d0d4010d4} acpipowerbutton
В "ручном" режиме все работет...

Нужно выключение в "автоматическом" режиме! Погуглил... Нашел прицип работы, но строка не получается? Может в AltLinux немного другой синтаксис? Или я туповат?
VBoxManage list runningvms | sed -r 's/.*\{(.*)\}//' | xargs -L1 -I {} VBoxManage controlvm {} savestate

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 18 696
    • Домашняя страница
    • Email
Помогите пожалуйста!

Не получается написать строку для одновременного завершения работы нескольких гостевых Virtual Box.

Получаю список гостевых машин:
VBoxManage list runningvms
Даю команду на отключение:
VBoxManage controlvm {6e5598ec-ff94-45fb-8a44-716d0d4010d4} acpipowerbutton
В "ручном" режиме все работет...

Нужно выключение в "автоматическом" режиме! Погуглил... Нашел прицип работы, но строка не получается? Может в AltLinux немного другой синтаксис? Или я туповат?
VBoxManage list runningvms | sed -r 's/.*\{(.*)\}//' | xargs -L1 -I {} VBoxManage controlvm {} savestate

Зачем глупости в виде -L1? Используйте -n1, если надо всю команду вызывать каждый раз на отдельную строку, передаваемую xargs. -I {} можно заменить на -i.
Андрей Черепанов (cas@)

Оффлайн San

  • Давно тут
  • **
  • Сообщений: 664
Зачем глупости в виде -L1? Используйте -n1
Я сильно глуповат в этом. Далек от программирования и написания таких переменных... Но сейчас попробую...

Остановку Виртуальных машин решил созданием скрипта:
#!/bin/bash

echo "Power Off Virtual Box"

VBoxManage list runningvms | tr -s '\" {' '%{' | cut -d '%' -f3  | while read uuid; do
   VBoxManage controlvm $uuid savestate;
done

Возник другой вопрос:
 - Мой файл скрипта будет запускать другая программа (WinPower если что)... Не из консоли естественно. Можно ли как то добавить вывод выполнения скрипта? Что бы было видно, как будьто я запустил скрипт в консоли?

Тоже не работает:$ VBoxManage list runningvms | sed -r 's/.*\{(.*)\}//' | xargs -n1 -i VBoxManage controlvm {} savestateДаже в консоли ни чего нет... Вероятно все таки в секции команды sed что то напутано?
« Последнее редактирование: 27.02.2020 15:55:41 от San »

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
- Мой файл скрипта будет запускать другая программа (WinPower если что)... Не из консоли естественно. Можно ли как то добавить вывод выполнения скрипта? Что бы было видно, как будьто я запустил скрипт в консоли?
Возможно, запуская WinPower из консоли?

А если Вам не принципиально в консоль писать, а главное - наличие вывода, то более правильным будет добавить в Ваш скрипт вывод той информации, которая Вас интересует, в фай. Т.е. логирование. Реализуемо как использованием стандартных выводов, так и, например, утилитой tee.
« Последнее редактирование: 27.02.2020 16:02:33 от Dmytro »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 18 696
    • Домашняя страница
    • Email
echo перед командой поставьте.
Андрей Черепанов (cas@)