Как я обрабатываю специальные символы как скобка в сценарии удара?

Я не знаком с Xen. С KVM я просто составил бы начальную загрузку VM в спасении или живом CD и chroot оттуда. Поскольку Вы сделали бы, если бы у Вас была эта проблема на Вашем реальном рабочем столе.

Если все, в чем Вы нуждаетесь, является смещением, в целом можно использовать losetup для этого. Или более конкретно смещения для таблиц разделов, можно использовать partx или kpartx.

Если у Вас есть разделенный LV, Вы могли бы получить использование смещений parted:

parted /dev/mapper/lvm-vmfoobar unit b print

и это распечатало бы смещения раздела (в байтах) как так

Number  Start         End           Size          Type      File system  Flags
 1      1048576B      2148532223B   2147483648B   primary   fat32        lba
 2      2149580800B   3223322623B   1073741824B   primary   ext2         boot
 3      3224371200B   13961789439B  10737418240B  primary   ext2

Поэтому предположите, что Вы хотели получить доступ к разделу 3 более прямых как, с помощью смещения 3224371200, Вы могли сделать это с losetup как это:

# losetup -f --show -o 3224371200 --sizelimit 10737418240 /dev/mapper/lvm-foobar
/dev/loop0

(sizelimit является дополнительным, для безопасности, таким образом, Вы не можете записать мимо конца раздела),

и проверьте, что это - корректная вещь

file -s /dev/loop0
/dev/loop0: Linux rev 1.0 ext2 filesystem data, UUID...

Кроме того, если Вы имеете partx или kpartx, простое

partx -a /dev/mapper/lvm-foobar

должен работать и Вы нашли бы отображенные разделы как /dev/mapper/lvm-foobarp1 или подобный (kpartx может использовать различные имена от partx).

И затем можно работать с тем связанным устройством (cryptsetup luksOpen, vgchange...), таким образом, необходимо в конечном счете смочь смонтировать корневую файловую систему VM, chroot, и passwd новый пароль root.

4
13.12.2014, 00:02
2 ответа
  1. Не используйте BackTicks , используйте $ () .
  2. Используйте отдельные цитаты вокруг буквальных строк и двойных переменных , поэтому Echo "$ test" .
  3. Не используйте ECHO , используйте printf .

В конце концов:

    $ test="$(printf '%s' '[asdf]')"
    $ printf "%s\n" "$test"
    [asdf]
7
27.01.2020, 20:47

Самый простой ответ - избежать [, чтобы он не воспринимался как специальный символ шаблона. (Закрывающий ] трактуется буквально, если ему не предшествует нецитируемый [.)

test=$(echo \[asdf])
5
27.01.2020, 20:47

Теги

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