BASH форматирование вывода cpuinfo - PullRequest
0 голосов
/ 27 февраля 2019

Я пишу скрипт для сбора на серверах информации, которая выводит результаты в HTML-файл.Это работает до определенного момента.Я застреваю, когда я беру cpuinfo.Он захватывает его и сбрасывает, где я хочу, но он не отформатирован, как в оболочке.Я пытался использовать 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

В итоге выглядит так:

enter image description here

Конечно, то, что я ищу, это нечто более встроенное, чем то, что вы получите, если запустите cat / proc / cpuinfo в оболочке.Любая помощь будет оценена.

Еще раз спасибо.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Использование <pre>, безусловно, самый простой способ - он также лучше справляется с мошенническими символами, чем мое предложение, которое просто выглядит лучше, когда работает: украсьте каждую строку вывода из $ CPUINFO тегами таблицы, чтобы получить большегибкий макет:

  • Inject <table border = "1"> до
  • Начало каждой строки становится <tr><td>
  • Двоеточие становится </td><td>
  • Конец строки становится </td></tr>
  • inject </table> после

Это небольшой кусочек sed, например:

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

Если вычто касается непечатаемых текстов в основном тексте, то вы можете заключить каждый подпункт в теги <pre>.

Также обратите внимание, что если у вас несколько процессоров, список может быть очень длинным (80 процессоров +), и каждыйполе то же самое, за исключением процессора МГц, так что вы можете рассмотреть возможность объединения их в несколько столбцов, где они различаются.Это может быть довольно волосатым HTML, хотя.

0 голосов
/ 27 февраля 2019

Вы хотите использовать элемент <pre> :

Элемент HTML <pre> представляет собой предварительно отформатированный текст, который должен быть представлен точно так, как написано в файле HTML.Текст обычно отображается с использованием непропорционального («моноширинного») шрифта.Пробелы внутри этого элемента отображаются как написано.

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

Пример:


processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6

В качестве альтернативы вы можете обработать вывод, чтобы сгенерировать из него фактическую таблицу HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...