virt-edit —
програма
для
редагування
файлів у
віртуальній
машині
virt-edit [--параметри] -d назва_домену файл [файл ...]
virt-edit [--options] -a диск.img [-a диск.img ...] файл [файл ...]
virt-edit [-d назва_домену|-a диск.img] файл -e 'вираз'
Застарілий
стиль:
virt-edit назва_домену файл
virt-edit диск.img [диск.img ...] файл
"virt-edit" —
інструмент
командного
рядка для
редагування
"файла",
який
зберігається
у вказаній
віртуальній
машині (або
образі
диска).
Ви можете
вказати
декілька
назв
файлів.
Вміст
таких
файлів
буде
редаговано
послідовно.
Назви
файлів
слід
вказувати
повністю
(разом зі
шляхом),
починаючи
з
кореневого
каталогу
(тобто
назва має
починатися
з «/»).
Якщо ви
просто
хочете
переглянути
файл,
скористайтеся
virt-cat(1).
Для
виконання
складніших
дій можна
скористатися
програмою
guestfish(1) (див.
"ВИКОРИСТАННЯ
GUESTFISH" нижче).
"virt-edit" не можна
використовувати
для
створення
файлів. Для
цього, та
багатьох
інших
завдань,
слід
використовувати
guestfish(1).
Інтерактивне
редагування
іменованих
файлів:
virt-edit -d mydomain /boot/grub/grub.conf
virt-edit -d mydomain /etc/passwd
Для
гостьових
систем Windows
передбачено
розпізнавання
таких
шляхів у Windows:
virt-edit -d mywindomain 'c:\autoexec.bat'
Якщо
встановлено
Perl, ви також
можете
редагувати
файли у
неінтерактивному
режимі (див.
"НЕІНТЕРАКТИВНЕ
РЕДАГУВАННЯ"
нижче). Щоб
змінити
типовий
рівень init на 5:
virt-edit -d mydomain /etc/inittab -e 's/^id:.*/id:5:initdefault:/'
- --help
- Показати
коротку
довідку.
-
-a файл
-
--add файл
- Додати
файл, який
має бути
образом
диска з
віртуальної
машини.
Якщо у
віртуальній
машині
декілька
блокових
пристроїв,
вам слід
вказати їх
усі за
допомогою
окремих
записів
параметра
-a.
Формат
образу
диска
визначається
автоматично.
Щоб
перевизначити
його і
примусово
використати
певний
формат,
скористайтеся
параметром
--format=...
-
-a
адреса
-
--add
адреса
- Додати
віддалений
диск. Див.
"ДОДАВАННЯ
ВІДДАЛЕНОГО
СХОВИЩА" in
guestfish(1).
-
-b
СУФІКС
-
--backup
СУФІКС
- Створити
резервну
копію
початкового
файла у
образі
диска
гостьової
системи.
Резервна
копія
матиме
таку саму
назву, що і
початковий
файл, із
додаванням
суфікса
"суфікс".
Зазвичай,
першим
символом
суфікса
"суфікс"
буде
крапка, ".",
отже, можна
віддати
таку
команду:
virt-edit -b .orig [тощо]
Типово
файл
резервної
копії не
створюється.
- --blocksize=512
- --blocksize=4096
- --blocksize
- This parameter sets the sector size of the disk image. It
affects all explicitly added subsequent disks after this parameter. Using
--blocksize with no argument switches the disk sector size to the
default value which is usually 512 bytes. See also
"guestfs_add_drive_opts" in guestfs(3).
-
-c
адреса
-
--connect
адреса
- Якщо
використовується
libvirt,
встановити
з’єднання
з вказаним
URI. Якщо
пропущено,
з’єднання
буде
встановлено
з типовим
гіпервізором
libvirt.
Якщо
вказати
блокові
пристрої
гостьових
систем
безпосередньо,
libvirt не буде
використовуватися
взагалі.
-
-d ГІСТЬ
-
--domain
ГІСТЬ
- Додати
всі диски з
вказаної
гостьової
системи libvirt. UUID
доменів
можна
використовувати
замість
назв.
- --echo-keys
- Типово,
якщо virt-edit
попросить
вас ввести
ключ або
пароль,
програма
не
відтворюватиме
введені
символи на
екрані.
Якщо ви не
боїтеся
TEMPEST-нападів,
або у вашій
кімнаті
нікого,
окрім вас,
немає, ви
можете
скористатися
цим
прапорцем,
щоб бачити,
які саме
символи ви
вводите.
-
-e вираз
-
--edit ВИРАЗ
-
--expr вираз
- Замість
запуску
зовнішнього
редактора,
неінтерактивно
застосувати
вираз Perl
"ВИРАЗ" до
усіх
рядків
файла. Див.
"НЕІНТЕРАКТИВНЕ
РЕДАГУВАННЯ"
нижче.
Слід
подбати
про
належне
розставлення
лапок у
виразі, щоб
запобігти
його зміні
у
командній
оболонці.
Зауважте,
що цим
параметром
можна буде
скористатися,
лише якщо
встановлено
Perl 5.
- --format=raw|qcow2|..
- --format
- Типовим
значенням
для
параметра
-a є
автоматичне
визначення
формату
образу
диска.
Використання
цього
параметра
примусово
визначає
значення
параметрів
-a формату
диска у
наступному
рядку
команди.
Використання
параметра
--format без
аргументу
перемикає
програму у
режим
автоматичного
визначення
у
наступних
параметрах
-a.
Приклад:
virt-edit --format=raw -a диск.img файл
примусове
встановлення
формату
без
обробки
(без
автоматичного
визначення)
для disk.img.
virt-cat --format=raw -a диск.img --format -a інший.img файл
примусове
встановлення
формату
без
обробки
(без
автоматичного
визначення)
для diskimg і
повернення
до
автоматичного
визначення
для another.img.
Якщо ви
користуєтеся
ненадійними
образами
гостьових
систем у
необробленому
форматі,
вам слід
скористатися
цим
параметром
для
визначення
формату
диска.
Таким
чином
можна
уникнути
можливих
проблем з
захистом
для
сформованих
зловмисниками
гостьових
систем (CVE-2010-3851).
-
--key SELECTOR
- Specify a key for LUKS, to automatically open a LUKS device
when using the inspection. "ID" can be either the libguestfs
device name, or the UUID of the LUKS device.
-
--key "ID":key:KEY_STRING
- Use the specified "KEY_STRING" as
passphrase.
-
--key "ID":file:FILENAME
- Read the passphrase from FILENAME.
- --keys-from-stdin
- Read key or passphrase parameters from stdin. The default
is to try to read passphrases from the user by opening /dev/tty.
If there are multiple encrypted devices then you may need to supply multiple
keys on stdin, one per line.
-
-m
пристрій[:точка_монтування[:параметри[:тип_файлової_системи]]]
-
--mount
пристрій[:точка_монтування[:параметри[:тип_файлової_системи]]]
- Змонтувати
названий
розділ або
логічний
том до
вказаної
точки
монтування.
Якщо точку
монтування
не вказано,
типовим
значенням
є /.
Визначення
точки
монтування
вимикає
інспектування
гостьової
системи і
призводить
до
монтування
її
кореневої
системи та
усіх її
точок
монтування.
Тому вам
слід
забезпечити
монтування
усіх точок
монтування,
потрібних
для роботи
із файлами,
назви яких
вказано як
аргументи.
Якщо ви не
знаєте, які
саме
файлові
системи
містяться
у образі
диска, ви
можете або
запустити
guestfish без
цього
параметра
і
ознайомитися
зі списком
доступних
розділів,
файлових
систем та
логічних
томів (див.
команди
"list-partitions", "list-filesystems" і
"lvs"), або
скористатися
програмою
virt-filesystems(1).
Третьою (і
нечасто
використовуваною)
частиною
параметра
монтування
є список
параметрів
монтування,
які
використовуються
для того,
щоб
змонтувати
підлеглу
файлову
систему.
Якщо такий
список не
буде
задано,
параметрами
монтування
вважатиметься
або
порожній
рядок, або
"ro" (другий
варіант
використовується,
якщо
використано
прапорець
--ro).
Заданням
параметрів
монтування
ви
перевизначаєте
типовий
варіант.
Ймовірно,
єдиним
випадком,
коли вам
може
знадобитися
це, є
випадок
вмикання
списків
керування
доступом (ACL)
і/або
розширених
атрибутів,
якщо у
файловій
системі
передбачено
їхню
підтримку:
-m /dev/sda1:/:acl,user_xattr
Використання
цього
прапорця є
еквівалентним
до
використання
команди
"mount-options".
Четвертою
частиною
параметра
є назва
драйвера
файлової
системи,
якою слід
скористатися,
зокрема "ext3"
або "ntfs". У
визначенні
цієї
частини
параметра
рідко
виникає
потреба,
але вона
може бути
корисною,
якщо для
файлової
системи
можна
скористатися
декількома
драйверами
(приклад:
"ext2" і "ext3"), або
libguestfs
визначає
файлову
систему
помилково.
- -v
- --verbose
- Увімкнути
докладний
показ
повідомлень
з метою
діагностики.
- -V
- --version
- Показати
дані щодо
версії і
завершити
роботу.
- -x
- Увімкнути
трасування
викликів
програмного
інтерфейсу
libguestfs.
У
попередніх
версіях virt-edit
можна було
використовувати
або
virt-edit диск.img [диск.img ...] файл
або
virt-edit назва_гостьової_системи файл
тоді як у
цій версії
вам слід
скористатися
-a або
-d,
відповідно,
щоб
уникнути
помилок у
випадках,
коли назва
образу
диска може
збігатися
із назвою
гостьової
системи.
З
міркувань
зворотної
сумісності
передбачено
підтримку
запису
параметрів
у
застарілому
форматі.
"virt-edit"
зазвичай
викликає $EDITOR
(або vi), щоб
адміністратор
системи
зміг
інтерактивно
редагувати
файл.
Передбачено
також два
способи
використання
"virt-edit" зі
скриптів з
метою
автоматизації
редагування
файлів.
(Зауважте,
що хоча ви
можете
користуватися
"virt-edit" у цей
спосіб,
стійкішим
до помилок
буде
написання
скриптів,
які
безпосередньо
використовують
програмний
інтерфейс
libguestfs та Augeas для
редагування
файлів
налаштувань.)
Першим
методом є
тимчасове
встановлення
$EDITOR у
значення
назви
скрипту
або
програми,
яку ви
хочете
запустити.
Скрипт
буде
викликано
у форматі
"$EDITOR tmpfile", він має
оновлювати
"tmpfile" на місці
у будь-який
спосіб.
Другим
методом є
використання
параметра
-e програми
"virt-edit" для
запуску
короткого
фрагмента
коду Perl у
стилі
sed(1).
Наприклад,
щоб
змінити
усі
екземпляри
"foo" на "bar" у
файлі,
віддайте
таку
команду:
virt-edit -d назва_домену назва_файла -e 's/foo/bar/'
Можна
скористатися
усією
потужністю
формальних
виразів Perl
(див.
perlre(1)).
Наприклад,
для
вилучення
пароля root ви
можете
віддати
таку
команду:
virt-edit -d назва_домену /etc/passwd -e 's/^root:.*?:/root::/'
Під час
обробки
команди
вираз Perl
застосовується
до кожного
з рядків
файла.
Рядок,
разом із
кінцевим
"\n",
передається
у $_, а вираз
має
оновити $_
або лишити
його вміст
без змін.
Щоб
вилучити
рядок,
встановіть
для $_
значення
порожнього
рядка.
Наприклад,
щоб
вилучити
обліковий
запис "apache" з
файла
паролів, ви
можете
віддати
таку
команду:
virt-edit -d mydomain /etc/passwd -e '$_ = "" if /^apache:/'
Щоб
вставити
рядок,
допишіть
його на
початку
або
наприкінці
$_. Втім,
дописування
рядків
наприкінці
файла у цей
спосіб є
доволі
складною
справою —
оскільки
не існує
загального
поняття
«останній
рядок
файла», ваш
вираз
просто не
буде
викликано
ще раз. Якщо
ви хочете
дописати
рядок
наприкінці
файла, вам
варто
скористатися
першим
методом
(встановленням
значення
для $EDITOR).
Змінна $lineno
містить
значення
номера
поточного
рядка. За
традицією,
перший
рядок
файла має
номер 1.
Значення,
повернуте
у
результаті
обробки
виразу,
ігнорується,
але вираз
може
викликати
"die" з метою
переривання
усієї
програми
без
внесення
змін до
початкового
файла.
Слід
пам'ятати,
що
відповідник
кінця
рядка при
використанні
$_ може
містити
кінцеве "\n"
або (у
файлах DOS) "\r\n",
або, якщо
файл не
закінчується
символом
нового
рядка,
жодну з цих
послідовностей.
Тому для
пошуку або
заміни
певного
тексту
наприкінці
рядка слід
використовувати
такий
формальний
вираз:
/якийсь текст(\r?\n)?$/
Альтернативним
варіантом
є
використання
функції "chomp"
Perl, але так,
щоб не
обрізати
саме $_
(оскільки
ця функція
вилучає
усі
символи
нового
рядка з
файла):
my $m = $_; chomp $m; $m =~ /якийсь текст$/
У "virt-edit"
передбачено
обмежені
можливості
щодо
обробки
літерних
дисків та
шляхів у Windows
(наприклад
E:\foo\bar.txt).
Тоді і лише
тоді, коли у
гостьовій
системі
працює Windows:
- •
- Літери
дисків,
наприклад
"C:",
замінюються
на адреси
відповідних
файлових
систем на
основі
даних з
регістру
Windows.
- •
- Усі
символи
зворотної
похилої
риски ("\") у
шляху
замінюються
символами
звичайної
похилої
риски так,
щоб libguestfs
змогла
обробити
адресу.
- •
- Шлях до
файла,
вміст
якого має
бути
редаговано,
визначається
без
врахування
регістру
символів у
його
записі.
Відомі
певні
недоліки
програми:
- •
- Перехід
за деякими
символічними
посиланнями
NTFS може
здійснюватися
з
помилками.
- •
- Точки
з'єднання NTFS,
які
виходять
за межі
однією
файлової
системи
використовувати
не можна.
guestfish(1) є
потужнішим
інструментом
нижчого
рівня, яким
можна
скористатися,
якщо "virt-edit" не
працює.
Використання
"virt-edit" є
приблизним
еквівалентом
такого:
guestfish --rw -i -d назва_домену edit /файл
де
"назва_домену"
— назва
гостьової
системи libvirt, а
файл —
шлях до
файла
повністю.
У вказаній
вище
команді
використано
можливість
інспектування
гостьових
систем
засобами libguestfs,
отже, вона
не
працюватиме
у
гостьових
системах,
які libguestfs не
може
інспектувати,
або у
довільних
образах
дисків, які
не містять
гостьових
систем. Щоб
редагувати
дані файла
безпосередньо
на образі
диска,
скористайтеся
такою
командою:
guestfish --rw -a диск.img -m /dev/sda1 edit /файл
де
диск.img —
образ
диска,
/dev/sda1 —
файлова
система у
образі
диска для
редагування,
а
файл —
шлях до
файла
повністю.
Програма
"virt-edit" не
здатна
створювати
файли. Для
створення
слід
користуватися
командами
guestfish "touch", "write" та
"upload":
guestfish --rw -i -d назва_домену touch /новий_файл
guestfish --rw -i -d назва_домену write /новий_файл "новий вміст"
guestfish --rw -i -d назва_домену upload локальний_файл /новий_файл
- "EDITOR"
- Якщо
встановлено,
цей рядок
використовуватиметься
для
виклику
редактора.
Рядок може
містити
аргументи,
наприклад,
"emacs -nw"
Якщо не
встановлено,
використовуватиметься
"vi".
Ця
програма
повертає
значення 0 у
разі
успішного
завершення
і
ненульове
значення,
якщо
сталася
помилка.
guestfs(3),
guestfish(1),
virt-cat(1),
virt-copy-in(1),
virt-tar-in(1),
http://libguestfs.org/,
perl(1),
perlre(1).
Richard W.M. Jones
http://people.redhat.com/~rjones/
Copyright (C) 2009-2020 Red Hat Inc.
To get a list of bugs against libguestfs, use this link:
https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
To report a new bug against libguestfs, use this link:
https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
When reporting a bug, please supply:
- •
- The version of libguestfs.
- •
- Where you got libguestfs (eg. which Linux distro, compiled
from source, etc)
- •
- Describe the bug accurately and give a way to reproduce
it.
- •
- Run libguestfs-test-tool(1) and paste the
complete, unedited output into the bug report.