簡體   English   中英

cpuinfo的BASH格式化輸出

[英]BASH formatting output of cpuinfo

我正在編寫腳本以獲取服務器上的大量信息,這些信息將結果輸出到html文件中。 工作到一定程度。 抓住cpuinfo時,我被卡住了。 它抓住它並將其轉儲到我想要的位置,但是它沒有像在shell中那樣被格式化。 我已經嘗試使用sed,但是也許我沒有很好地使用它,並且我嘗試了使用列,但似乎沒有任何效果。 我一直在說話。 請在下面查看我的代碼以及它的輸出方式...。

謝謝

#!/bin/bash

# Define global variables
HOSTNAME=`uname -n`
TITLE="System Information for "
CPUINFO=`cat /proc/cpuinfo`


cat <<- EOF > /tmp/grab_server_info.html
<html>
<head>
    <title>
    $TITLE $HOSTNAME
    </title>
</head>

<body>
    <h1>$HOSTNAME</h1>
    <p>Last run on $(date +"%c") by $USER</p>
    <h3>UPTIME</h3>
    <p>$(uptime)</p>
    <h3>CPU Information</h3>
    <p>$CPUINFO</p>
</body>
</html>
EOF

最終看起來像這樣:

在此處輸入圖片說明

當然,我要尋找的是與在shell中運行cat / proc / cpuinfo所得到的內容更加內聯的東西。 任何幫助,將不勝感激。

再次感謝。

您要使用<pre>元素

HTML <pre>元素表示預格式化的文本,該文本將完全按照HTML文件中的內容進行呈現。 通常使用非比例(“等寬字體”)字體呈現文本。 此元素內的空白顯示為書面形式。

<h3>CPU Information</h3>
<pre>$CPUINFO</pre>

例:

 <pre> processor : 0 vendor_id : GenuineIntel cpu family : 6 </pre> 

或者,您可以處理輸出以從中生成實際的HTML表。

使用<pre>當然是最簡單的方法-它比我的建議還更好地處理流氓符號,當它起作用時,它看起來往往更好:用表標簽裝飾$ CPUINFO的輸出的每一行以得到更靈活的布局:

  • 在之前插入<table border = "1">
  • 每行的開頭變為<tr><td>
  • 冒號變為</td><td>
  • 行的結尾變為</td></tr>
  • 注入</table>之后

這是快速的sed,例如:

cat /proc/cpuinfo| sed -E 's/^([^:]*):(.*)$/<tr><td>\1<\/td><td>\2<\/td><\/tr>/'

如果您擔心正文中的非可打印內容,則可以用<pre>標簽將每個子句括起來。

還要注意,如果您有多個處理器,則列表可能會很長(80個處理器+),並且每個字段都相同(除了cpu MHz),因此您可以考慮將它們組合成更多確實有所不同的列。 不過,這將是非常毛茸茸的html。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM