DF 명령의 결과를 변수로 출력한 다음 HTML 페이지로 인쇄합니다.

DF 명령의 결과를 변수로 출력한 다음 HTML 페이지로 인쇄합니다.

기본적으로 서버에서 디스크 공간을 캡처하고 결과를 HTML 페이지로 출력하는 스크립트를 실행하는 데 문제가 있습니다.

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

STDOUT의 출력은 훌륭하고 형식이 잘 지정되어 있습니다. 변수를 HTML 페이지에 에코하면 출력은 다음과 같이 한 줄이 됩니다.

/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 페이지에서 공백을 유지하기 위해 다른 답변에서 제안한 필터도 있습니다.

관련 정보