Существует стандартный инструмент для шифрования файла :GnuPG (, также называемый GPG ). Это стандартизированный формат, и вы можете вызывать gpg из любого языка программирования.
Если вы вводите буквы A -E -S в свой код, вы делаете это неправильно . Очевидно, что вам не нужно шифровать файл с помощью AES, иначе потребуется определенный формат. Таким образом, ваше требование состоит в том, чтобы зашифровать файл , точка. Так что вызовите инструмент шифрования файлов, и пусть он беспокоится об использовании AES.
$ VBoxManage showvminfo 'Test Machine' --machinereadable | sed -n '/^UUID=/{ s///; s/"//gp; }'
1ce7ffef-8faa-4138-9b92-466698762f62
Вместо использования команды list vms
sub -используется команда sub -showvminfo
, которая получает всю информацию для конкретной машины (здесь VM с именемTest Machine
). В --machinereadable
это выводит данные в форме, которую легко анализировать. UUID виртуальных машин будет выводиться как
UUID="1ce7ffef-8faa-4138-9b92-466698762f62"
, который обнаруживает команда sed
. Он удаляет бит UUID=
и все двойные кавычки, а затем печатает все, что осталось.
Команду sed
можно записать несколькими способами. Вариант, например,
sed -n 's/^UUID="\(.*\)"$/\1/p'
Вот как бы я это сделал, используя P.E. и синтаксис bash.
while read -r vmname uuid; do
uuid=${uuid##*'{'}
uuid=${uuid%'}'*}
vmname=${vmname#*'"'}
vmname=${vmname%'"'*}
printf '%-15s %s\n' "$vmname" "$uuid"
done < <(VBoxManage list vms)
Вы можете запустить vms внутри цикла с совпадением, используя тест, или сохранить вывод в массиве и так далее. Это также должно быть безопасно, даже если в имени виртуальной машины есть {
или }
. Я использую этот код в своем скрипте с 2013 года:-)
- Разделитель полей F в awk. Здесь мы используем 2 разделителя полей. (либо { либо })
VBoxManage list vms | awk -F"[{}]" '/Test Machine/{print $2}'
Другой способ.
VBoxManage list vms | awk -F ' ' '{print substr($2, 2, length($2) - 2)}'
Разделяйте поля пустым пространством
awk -F ' '
Печатать второй столбец, удаляя первый {
и последний }
символы
'{print substr($2, 2, length($2) - 2)}'
grep -Po "(?<={)[a-f0-9-]+(?=})"
... другими словами, любая последовательность шестнадцатеричных цифр и тире, расположенная после открывающей фигурной скобки и сразу за закрывающей.
grep -Eo "([a-f0-9-]+-){4}[a-f0-9-]+"
... т. е. 5 групп шестнадцатеричных цифр, разделенных тире.
VBoxManage list vms| awk -F "{" '/Test Machine/{gsub("}","",$NF);print $NF}'
выход
9d0953a7-ca2a-4667-8c5b-1a9f550b2956