0

openwsman を使用して一連のサーバーに対して実行しているスクリプトを使用して、サーバーからハードウェア データを取得しています。これは、非常にオープンな環境で変更を追跡し、最終的に mysql db を更新してインベントリ レコードを保持しようとする試みです。問題は、preg_replace が配列内の各値の先頭と末尾に「1」を追加していることです。これらの手順はかなり珍しいので、それぞれが何をするのかを説明し、最後に出力を示します。

$memsize = shell_exec("wsman enumerate http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_MemoryView -h $ipaddress -V -v -c dummy.cert -P 443 -u $user -p $pass -j utf-8 -y basic | grep 'Size'");
$memsize = trim($memsize); #Removes excess spaces at beginning and end of the output.
$memsize = str_replace('          ',',',$memsize); #Replaces spaces between values with a comma.
$memsize = explode(',',$memsize); #Converts the values pulled into an array with comma as the delimiter
$memsizepreg = preg_replace("/[^0-9]/","",$memsize); #Deletes all non-number characters.
$memsizesum = array_sum($memsizepreg); #Gets a sum of all the detected DIMMs.
echo $memsize[0];
echo "<br>";
echo $memsize[1];
echo "<br>";
echo $memsize[2];
echo "<br>";
echo $memsize[3];
echo "<br>";
echo var_dump($memsize);
echo "<br>";
echo $memsizepreg[0];
echo "<br>";
echo $memsizepreg[1];
echo "<br>";
echo $memsizepreg[2];
echo "<br>";
echo $memsizepreg[3];
echo "<br>";
echo var_dump($memsizepreg);
echo "<br>";
echo $memsizesum;

さらに、preg_replace を削除すると、array_sum が空白になります。変数 memsize、memsizepreg、および memsize sum 変数を出力したのは、プルされたデータが正確であり、preg_replace が何を行っていても、変数の先頭と末尾に 1 が追加されることを確認するためだけです。

出力:

2048 
2048 
2048 
2048
array(4) { [0]=> string(24) "2048 " [1]=> string(24) "2048 " [2]=> string(24) "2048 " [3]=> string(23) "2048" } 
120481
120481
120481
120481
array(4) { [0]=> string(6) "120481" [1]=> string(6) "120481" [2]=> string(6) "120481" [3]=> string(6) "120481" } 
481924
4

1 に答える 1

0

コメントに記載されているように、誰かが「var_dump($array)」を提案しました。これにより、変数の内容の合計サイズが 24 文字であることが明らかになりましたが、変数の出力は 4 文字しか表示されませんでした。これは、XML タグがまだ存在し、ブラウザーによって処理されていることが原因でした。タグの 1 つにタグが含まれており、preg_replace を実行すると、数字以外はすべて残っていたため、タグは削除されましたが、タグから 1 が残りました。wsman コマンドの内容を収集した後に strip_tags() を実行することでこれを修正でき、値が一致しました。var_dump についてコメントしてくれた人にもう一度感謝します。残念ながら、あなたはあなたのコメントを削除したので、私はクレジットを与えることができません.

于 2013-10-26T02:09:33.297 に答える