DFコマンドの結果を変数として出力し、HTMLページとして印刷します。

DFコマンドの結果を変数として出力し、HTMLページとして印刷します。

デフォルトでは、サーバーからディスク領域をキャプチャし、結果をHTMLページに出力するスクリプトを実行するのに問題があります。

STORAGE=$(df -PTh | column -t | sort -n -k6n)

STDOUTの出力は優れており、フォーマットされています。変数をHTMLページにエコーすると、出力は次のように1行になります。

/dev/vx/dsk/localdg/wm7x01 vxfs 30G 21G 9.3G 70% /apps/wm7x01 /dev/mapper/vg00-vrts ext3 6.9G 4.7G 2.3G 68% /vrts_install /dev/mapper/vg00-ora11g_cli ext3 7.7G 4.1G 3.3G 57% /usr/oracle11g_cli /dev/mapper/vg00-repackage ext3 1008M 423M 586M 42% /var/spool/repackage /dev/vx/dsk/cfs_dcgnts_dg/shared vxfs 220G 91G 130G 42% /apps/shared

私も以下を試してみました。

  • 引用:echo "$STORAGE"
  • ソート:echo "{STORAGE[@]}"

残念ながら、すべての結果は同じです。

答え1

あなたはそれにどのように反応しますか?のように

$ printf "<pre>%s</pre>\n" "$storage" >> file.html 

動作する必要があります。

を含める必要はありませんcolumn。これは、次を使用して生成できるHTMLテーブルの候補です。

df -PTh | \
sed '1d' | \
sort -n -k6 | \
awk '
{
    printf "\n\t<tr>";
    for (n = 1; n < 7; ++n)
            printf("\n\t<td>%s</td>",$n);
    printf "\n\t<td>";
    for(;n <= NF; ++n)
            printf("%s ",$n);
    printf "</td>\n\t</tr>"
}
'

次のように梱包してください。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Disk space usage</title>
<style>
table, td, th {
    border : 1px solid green;
}
th {
    background-color: green;
    color           : white;
}
</style>
</head><body>
<table>
    <tr>
    <th>Filesystem</th>
    <th>Type</th>
    <th>Size</th>
    <th>Used</th>
    <th>Avail</th>
    <th>Use%</th>
    <th>Mounted on</th>
    </tr>

<!-- df output awk table -->

</table>
</body>
</html>

答え2

これらの出力をHTMLの辞書ブロックにまとめます。

はい

STORAGE=$(df -PTh | column -t | sort -n -k6n)
echo "<pre>$STORAGE</pre>"

HTML は空白を保存することには気をつけません。

答え3

コマンドチェーンの出力には空白と改行形式の空白があります(幸い、タブはありません)。出力を次にパイプする必要があります| sed 's/ /&nbsp;/g' | sed 's/^/<br>/'

STORAGE=$(df -PTh | column -t | sort -n -k6n)| sed 's/ /&nbsp;/g' | sed 's/^/<br>/'

白紙に置く。結果のフォント変更効果を得ることなく使用できます<pre>

答え4

コマンド置換はスペースを破壊します。bash(1)マニュアルページから:

Bash はコマンドを実行し、コマンド置換をコマンドの標準出力に置き換え、末尾の改行を削除して拡張を実行します。埋め込まれた改行文字は削除されませんが、単語の分離中に削除される可能性があります。

今私の理解では、これは次のことを意味します。

STORAGE="$(df ...)"

すべての(末尾の空白を除く)空白を保存するのに十分でなければなりません。しかし、両方のバージョンを試してみましたが、スペースは完全に混乱しました。代わりに出力リダイレクトを使用するとどうなりますか?

df -PTh | column -t | sort -n -k6n >> /your/html/file

レンダリングされたHTMLページでスペースを維持するために他の回答で提案されたフィルタもあります。

関連情報