これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド virt-edit です。
プログラム:
NAME
virt-edit - 仮想マシン内のファイルを編集します
SYNOPSIS
virt-edit [--options] -d domname ファイル [ファイル ...]
virt-edit [--options] -a disc.img [-a disc.img ...] ファイル [ファイル ...]
virt-edit [-d domname|-a disc.img] file -e 'expr'
古いスタイル:
virt-edit domname ファイル
virt-edit disk.img [disk.img ...] ファイル
警告
ライブ仮想マシン上で「virt-edit」を使用するか、他のディスク編集ツールと同時に使用すると、
危険であり、ディスク破損を引き起こす可能性があります。 仮想マシンをシャットダウンする必要がある
このコマンドを使用する前に、ディスク イメージを同時に編集しないでください。
DESCRIPTION
「virt-edit」は、各「ファイル」が名前付きのディレクトリに存在する「ファイル」を編集するためのコマンドラインツールです。
仮想マシン(またはディスクイメージ)。
複数のファイル名を指定することができ、その場合、それぞれが順番に編集されます。 各
ファイル名は、ルート ディレクトリ (「/」で始まる) から始まるフル パスである必要があります。
ファイルを表示するだけの場合は、次を使用します。 仮想猫とします。
より複雑なケースについては、以下を参照してください。 ゲストフィッシュ(1) ツール (「GUESTFISH の使用」を参照)
下)。
「virt-edit」を使用して新しいファイルを作成することはできません。 ゲストフィッシュ(1) ではそれ以上のことができます。
例
指定されたファイルを対話的に編集します。
virt-edit -d mydomain /boot/grub/grub.conf
virt-edit -d マイドメイン /etc/passwd
Windows ゲストの場合、いくつかの Windows パスが認識されます。
virt-edit -d mywindomain 'c:\autoexec.bat'
Perl がインストールされている場合は、ファイルを非対話的に編集することもできます (「非対話型」を参照)
初期デフォルトレベルを 5 に変更するには、次の手順を実行します。
virt-edit -d mydomain /etc/inittab -e 's/^id:.*/id:5:initdefault:/'
OPTIONS
- 助けて
簡単なヘルプを表示します。
-a file
- 追加 file
追加 file これは、仮想マシンからのディスクイメージである必要があります。 仮想マシンの場合
複数のブロックデバイスがある場合は、それらすべてに個別に供給する必要があります -a オプション。
ディスクイメージのフォーマットは自動検出されます。 これをオーバーライドして強制するには
特定の形式は --format =。。 オプションを選択します。
-a URI
- 追加 URI
リモートディスクを追加します。 の「リモートストレージの追加」を参照してください。 ゲストフィッシュとします。
-b
- バックアップ
元のファイルのバックアップを作成する in ゲスト ディスク 画像。 バックアップには、
元のファイル名に「拡張子」を付けたものです。
通常、「拡張子」の最初の文字はドット「.」になります。 したがって、次のように書きます。
virt-edit -b .orig [など]
デフォルトでは、バックアップ ファイルは作成されません。
-c URI
- 接続 URI
libvirtを使用している場合は、指定されたものに接続します URI。 省略した場合は、に接続します
デフォルトのlibvirtハイパーバイザー。
ゲスト ブロック デバイスを直接指定した場合、libvirt はまったく使用されません。
-d ゲスト
- ドメイン ゲスト
指定されたlibvirtゲストからすべてのディスクを追加します。 代わりにドメインUUIDを使用できます
名前。
-エコーキー
キーとパスフレーズの入力を求めるプロンプトが表示されると、通常、virt-edit はエコーをオフにします。
入力している内容がわかりません。 テンペストの攻撃を心配していない場合
部屋には他に誰もいないので、このフラグを指定して入力内容を確認できます。
-e exp
--編集 exp
--expr exp
外部エディタを起動する代わりに、Perl 式を非対話的に適用します。
ファイルの各行に「EXPR」を追加します。 以下の「非インタラクティブ編集」を参照してください。
式が変更されないように、式を適切に引用するように注意してください。
シェル。
このオプションは、Perl5がインストールされている場合にのみ使用可能であることに注意してください。
--format = raw | qcow2 |。。
- フォーマット
のデフォルト -a オプションは、ディスクイメージのフォーマットを自動検出することです。 使用する
これにより、ディスクフォーマットが強制されます -a コマンドラインに続くオプション。 使用する
- フォーマット 引数なしで、後続の自動検出に戻ります -a オプション。
具体的な例を挙げますと、以下の通りです。
virt-edit --format=raw -disk.img ファイル
のraw形式(自動検出なし)を強制します ディスク.img.
virt-edit --format=raw -a disc.img --format -a another.img ファイル
のraw形式(自動検出なし)を強制します ディスク.img の自動検出に戻ります
別の.img.
信頼できないraw形式のゲストディスクイメージがある場合は、このオプションを使用して次のことを行う必要があります。
ディスクフォーマットを指定します。 これにより、悪意のあるセキュリティ問題の可能性を回避できます
ゲスト(CVE-2010-3851)。
--標準入力からのキー
stdinからキーまたはパスフレーズのパラメーターを読み取ります。 デフォルトでは、読み込もうとします
開くことによるユーザーからのパスフレーズ / dev / tty.
-m dev [:mountpoint [:options [:fstype]]]
- マウント dev [:mountpoint [:options [:fstype]]]
指定されたマウントポイントに名前付きパーティションまたは論理ボリュームをマウントします。
マウントポイントを省略すると、デフォルトで次のようになります。 /.
マウントポイントを指定すると、ゲストの検査とそのマウントが無効になります。
root とそのすべてのマウントポイントをマウントする必要があるため、必要なすべてのマウントポイントを必ずマウントしてください。
引数として指定されたファイル名を操作します。
ディスクイメージに含まれるファイルシステムがわからない場合は、guestfishを実行できます。
このオプションがない場合は、使用可能なパーティション、ファイルシステム、およびLVを一覧表示します(を参照)。
「list-partitions」、「list-filesystems」、「lvs」コマンド)、または
virt-ファイルシステム(1)プログラム。
マウントパラメータのXNUMX番目の(そしてめったに使用されない)部分は、マウントオプションのリストです。
基盤となるファイルシステムをマウントするために使用されます。 これが指定されていない場合、マウントオプション
空の文字列または「ro」(後者の場合は後者)のいずれかです --ろ フラグが使用されます)。 に
マウントオプションを指定すると、このデフォルトの選択を上書きします。 おそらく唯一
これを使用するのは、ファイルシステムの場合にACLや拡張属性を有効にするためです。
それらをサポートできます:
-m / dev / sda1:/:acl、user_xattr
このフラグを使用することは、「mount-options」コマンドを使用することと同じです。
パラメータの3番目の部分は、「extXNUMX」や
「ntfs」。 これが必要になることはめったにありませんが、複数のドライバーが有効な場合に役立ちます。
ファイルシステム(例:「ext2」および「ext3」)、またはlibguestfsがファイルシステムを誤認した場合。
-v
-詳細
デバッグ用の詳細メッセージを有効にします。
-V
- バージョン
バージョン番号を表示して終了します。
-x libguestfsAPI呼び出しのトレースを有効にします。
オールドスタイル COMMAND LINE 議論
virt-edit の以前のバージョンでは、次のいずれかを記述できました。
virt-edit disk.img [disk.img ...] ファイル
or
virt-edit ゲスト名ファイル
一方、このバージョンでは使用する必要があります -a or -d 紛らわしいケースを避けるためにそれぞれ
ここで、ディスクイメージはゲストと同じ名前である可能性があります。
互換性のために、古いスタイルは引き続きサポートされます。
非対話型 EDITING
「virt-edit」は通常、$EDITOR (または vi) を呼び出し、システム管理者が
ファイルを対話的に編集します。
自動編集を行うためにスクリプトから「virt-edit」を使用する方法も XNUMX つあります。
ファイルに。 (ただし、 できる このように「virt-edit」を使用すると、エラーが発生しにくくなります。
libguestfs API と構成ファイルの Augeas を使用してスクリプトを直接作成します。
編集。)
XNUMX つ目の方法は、実行したいスクリプトまたはプログラムに $EDITOR を一時的に設定することです。
スクリプトは「$EDITOR tmpfile」として呼び出され、適切な「tmpfile」を更新する必要があります。
それは好きです。
XNUMX番目の方法は、 -e 「virt-edit」のパラメータで短い Perl スニペットを実行します
のスタイル sed(1)。 たとえば、ファイル内のすべての「foo」インスタンスを「bar」に置き換えるには、次のようにします。
virt-edit -d domname ファイル名 -e 's/foo/bar/'
Perl 正規表現の能力を最大限に活用できます (「 ペルレ(1))。 たとえば、
root のパスワードを削除するには、次のようにします。
virt-edit -d ダム名 /etc/passwd -e の/^root:.*?:/ルート::/'
実際に起こることは、スニペットが各行の Perl 式として評価されることです。
ファイル。 最後の "\n" を含む行は $_ に渡され、式は次のようになります。
$_ を更新するか、変更しないでください。
行を削除するには、$_ を空の文字列に設定します。 たとえば、「apache」ユーザーを削除するには
パスワードファイルからアカウントを取得するには、次のようにします。
virt-edit -d マイドメイン /etc/passwd -e '$_ = "" if /^apache:/'
行を挿入するには、$_ の先頭または末尾に行を追加します。 ただし、末尾に行を追加すると、
「ファイルの最終行」という概念がないため、この方法でファイルを作成するのはかなり困難です -
あなたの式は再び呼び出されないだけです。 最初の方法を使用するとよいでしょう
($EDITOR を設定) これを実行したい場合。
変数 $lineno には、現在の行番号が含まれます。 従来どおり、最初の行は
ファイル内の番号は 1 です。
式からの戻り値は無視されますが、式は「die」を呼び出す可能性があります。
元のファイルはそのままにして、プログラム全体を中止します。
行末を照合するときは、$_ に最後の "\n" が含まれる可能性があることに注意してください。または (DOS の場合)
ファイル) "\r\n"、またはファイルが改行で終わっていない場合は、これらのどちらも行われません。 したがって、
行末のテキストと一致または置換するには、次の正規表現を使用します。
/いくつかのテキスト(\r?\n)?$/
あるいは、$_ 自体を chomp しないように注意しながら、Perl の「chomp」関数を使用します (
ファイルからすべての改行が削除されます):
私の $m = $_; $mをむしゃむしゃ食べます。 $m =~ /テキスト$/
WINDOWS パス
「virt-edit」は、Windows のドライブ文字とパスを理解する能力が限られています (例:
E:\foo\bar.txt).
ゲストが Windows を実行している場合に限り、次のようになります。
· 「C:」などのドライブ文字プレフィックスは、Windows レジストリに対して解決されます。
正しいファイルシステム。
· パス内のバックスラッシュ (「\」) 文字はスラッシュに置き換えられます。
libguestfs で処理できます。
· 編集する必要があるファイルを見つけるために、パスは大文字と小文字を区別せずに解決されます。
既知の欠点がいくつかあります。
· 一部の NTFS シンボリック リンクは正しくたどられない可能性があります。
· ファイル システムをまたがる NTFS ジャンクション ポイントは追跡されません。
使用する ゲストフィッシュ
ゲストフィッシュ(1) は、「virt-edit」時に使用できる、より強力な低レベルのツールです。
動作しません。
「virt-edit」を使用することは、以下を実行することとほぼ同等です。
guestfish --rw -i -d domname edit /file
ここで、「domname」は libvirt ゲストの名前です。 /ファイル ファイルへのフルパスです。
上記のコマンドは libguestfs のゲスト検査機能を使用しているため、
libguestfs が検査できないゲスト、または検査できない任意のディスク イメージなど
ゲストが含まれています。 ディスク イメージ上のファイルを直接編集するには、次を使用します。
guestfish --rw -a disc.img -m /dev/sda1 edit /file
コラボレー ディスク.img ディスクイメージです、 の/ dev / sda1 ディスクイメージ内のファイルシステムです
編集して、 /ファイル ファイルへのフルパスです。
「virt-edit」では新しいファイルを作成できません。 guestfish コマンド「touch」、「write」、または
代わりに「アップロード」:
guestfish --rw -i -d domname touch /newfile
guestfish --rw -i -d domname write /newfile "新しいコンテンツ"
guestfish --rw -i -d domname アップロード ローカルファイル /newfile
ENVIRONMENT 変数
"編集者"
設定されている場合、この文字列はエディターとして使用されます。 引数を含めることもできます。 「emacs -nw」
設定されていない場合は、「vi」が使用されます。
EXIT ステータス
このプログラムは、成功した場合は0を返し、エラーがあった場合はゼロ以外を返します。
onworks.net サービスを使用してオンラインで virt-edit を使用する