Formating output in html

Hi Guys,

I was searching and landed up something here only.

This is the code and I want the formatted html in email but that is not working, anybody knows the reason why?

#!/bin/sh

set -x

DATE=`date -u`

# Print beginning of webpage
function html_header
{
    cat <<END
        <html>
         <head><title>${1}</title></head>
         <body>
         <h3>${1}</h3>
         <!-- Table of Contents links -->
         <p>
         <a href='#rpmversion'>RPM Versions</a>
         <a href='#processes'>Processes</a>
         </p>
         END
}

function html_footer
{

cat <<abc
</body>
</html>
abc

}

function html_title
{
echo "<h3><a name='#${2}'>$1</a></h3>"
}

function rpm_versions
{
html_title "RPM Versions" "rpmversion"
echo "<pre>"
rpm -qa|sort
echo "</pre>"
}

function get_allprocs
{
html_title "All Running Processes" "processes"
ps -fu ${USER}
}

html_header "Report Summary for ${DATE}" >> temp.html 
rpm_versions >> teml.html
get_allprocs >> temp.html
html_footer >> temp.html

cat temp.html|mailx -s "Test email" test@testme.com

When I run the code I get an error.

++ date -u
+ DATE='Mon May 6 04:58:38 UTC 2013'
./formatted_Script.sh: line 58: syntax error: unexpected end of file

What is the issue here?

---------- Post updated at 03:19 PM ---------- Previous update was at 02:59 PM ----------

Issue identified.
the END should be aligned to the left hand side, god knows why !

Anyhow I am not getting a well formatted output.

I am getting this output.

Report Summary for Thu May 9 11:28:19 UTC 2013
RPM Versions Processes 

RPM Versions
This is a test

All Running Processes
testing processess 

What are you missing?

<html>
	 <head><title>Report Summary for Mon May  6 06:26:08 UTC 2013</title></head>
	 <body>
	 <h3>Report Summary for Mon May  6 06:26:08 UTC 2013</h3>
	 <!-- Table of Contents links -->
	 <p>
	 <a href='#rpmversion'>RPM Versions</a>
	 <a href='#processes'>Processes</a>
	 </p>
<h3><a name='#rpmversion'>RPM Versions</a></h3> <pre>
acl-2.2.23-5.4.el4
acpid-1.0.3-2
alchemist-1.0.34-1
at-3.1.8-82.el4
atk-1.8.0-2
atk-1.8.0-2
at-spi-1.6.0-3

Why such garbage output?

---------- Post updated at 04:50 PM ---------- Previous update was at 04:36 PM ----------

I added these three magical lines but still no pretty output.

echo "MIME-Version: 1.0"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"

they are the output of rpm -qa|sort & ps -fu ${USER}
you may have to format it there! complaining the shell script or the mail types won't do any good. Try reading line by line and print them in a fixed length output!

Sir,

I don't know that is why I am requesting help here !

Everything in life is a learning experience :slight_smile:

Hi bluemind2005,
This does the job:

#!/bin/bash

set -x

DATE=`date -u`

# Print beginning of webpage
html_header ()
{
	cat <<END
		<html>
			<head><title>${1}</title>
			
			</head>
				<body>
					<h3>${1}</h3>
						<!-- Table of Contents links -->
							<p>
								<a href='#rpmversion'>RPM Versions</a>
								<a href='#processes'>Processes</a>
								</p>
END
}

html_footer () {
	cat <<abc
	</body>
	</html>
abc
}

html_title () {
	echo "<h3><a name='#${2}'>$1</a></h3>"
}


get_allprocs () {
	html_title "All Running Processes" "processes"
	cat <<procs
	<pre>$(ps -fu $USER)</pre>
procs
}

html_header "Report Summary for ${DATE}" > temp.html
get_allprocs >> temp.html
html_footer >> temp.html

mail -a 'MIME-Version: 1.0' -a 'Content-Type: text/html; charset=utf-8' -a 'X-AUTOR: Your name here' -s "Email subject here" your_email@here.com < temp.html


Please note that I did not include the rpm versions functions as I am working on a Debian machine. But taking a look at what I did with the get_allprocs function you should be able to add it without issues.
Let me know if you need anything else. If this solves your issue, kindly mark this thread as solved.