Hyper-V には、ホストとゲスト VM の間でキーと値のペアを送信する KVP コンポーネントが含まれています。
値を送受信するためのコード サンプルは、WMIのPowerShellの Windows ゲストで利用できます。
ただし、私のゲストはこのサービスの Linux バージョンを使用しています。
このサービスにキーと値のペアを照会するサンプル Linux スクリプトはどこにありますか?
Hyper-V には、ホストとゲスト VM の間でキーと値のペアを送信する KVP コンポーネントが含まれています。
値を送受信するためのコード サンプルは、WMIのPowerShellの Windows ゲストで利用できます。
ただし、私のゲストはこのサービスの Linux バージョンを使用しています。
このサービスにキーと値のペアを照会するサンプル Linux スクリプトはどこにありますか?
特定のファイルのキーと値のペアを読み取る bash スクリプトを次に示します。
#!/bin/bash
fname=$1
echo "Reading $fname"
nb=$(wc -c < $1)
nkv=$(( nb / (512+2048) ))
for n in $(seq 0 $(( $nkv - 1 )) ); do
offset=$(( $n * (512 + 2048) ))
k=$(dd if=$fname count=512 bs=1 skip=$offset status=none | sed 's/\x0.*//g')
v=$(dd if=$fname count=2048 bs=1 skip=$(( $offset + 512 )) status=none | sed 's/\x0.*//g')
echo "$k = $v"
done
Java での同じ機能:
String guest_param_file="/var/lib/hyperv/.kvp_pool_3";
if (new File(guest_param_file).exists())
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(guest_param_file),"UTF-8"));
char [] ckey=new char[512] ;
char [] cvalue=new char[2048] ;
while (true)
{
int charcount=br.read(ckey);
if (charcount==-1)
{
break;
}
br.read(cvalue);
String key=new String(ckey).trim();
String value=new String(cvalue).trim();
System.out.println( key+" = "+value);
}
br.close();
}
catch (UnsupportedEncodingException ex)
{
}
catch (FileNotFoundException ex)
{
}
catch (IOException ex)
{
}
}