In: Computer Science
Fully Functional Script written in BASH
In this section, you will write a fully functional script to help your manager with an important project that will build upon what you learned from your script work in Milestone Four. After you have written the script, you will execute it to generate a report for all three users (once for Bob, once for Henry, and once for Frank). You should have three unique generated reports in your ~/scripts directory (or more if you ran it multiple times per user). This script will be showcased to upper management and should demonstrate your best work.
Write the Script:
Write a fully functional and professional looking script that meets all of the following requirements.
1. Resides within your ~/scripts directory and is named tps-report-gen.sh.
2. Take a supplied user’s first name (Bob, Henry, or Frank) in any order when the script is executed (for example: sh tps-reportgen.sh bob).
3. Print out to the screen the text: TPS REPORT LISTING
4. A double newline.
5. Print out to the screen neatly the user’s name, company position, and home directory path on one line.
6. A double newline.
7. A list of TPS Reports associated with that user.
8. A double newline.
9. Print out to the screen the text: END REPORT LISTING
10. The script needs to print the output to the screen and generate a report into the same directory as the script named tps-list-USERDATETIME.rpt. USER would be the user's username and DATETIME would be the date and time that the report was run. USER and DATETIME would both change based on the username supplied and the date and time the script is executed. It may be easier to build the report file first, then simply cat the file to the screen within the script. An example report would look like:
tps-list-bob-030816624.rpt
HINT: To get the DATETIME portion formatted as requested use the following: date "+%m%d%y%k%M" | awk -F" " {'print $1$2'}
This Script generates the file(s) in the format described in the question. This also prints the listings on the screen using [printf "%s\n" tps-list-$1-*] where $1 is the argument passed (username) while executing the script.
---------------------------------------------------------------
BASH SCRIPT:
#!/bin/bash
echo "TPS REPORT LISTINGS"
echo "\n\n"
#Company Position and Directory Path
position="Manager"
dirpath="~/home/$1"
echo "User Name: $1, Company Position: $position, Home Directory
Path: $dirpath"
echo "\n\n"
#Generate report (i.e. tps-list-bob-030816624.rpt)
d=$(date "+%m%d%y%k%M" | awk -F" " {'print $1$2'})
#Write something to file
cat <<EOF > "tps-list-"$1"-"$d".rpt"
Report Contents
EOF
echo "Report generated: tps-list-"$1"-"$d".rpt"
#List of TPS Reports associated with user $1
echo "List of TPS Reports Associated with User $1:"
printf "%s\n" tps-list-$1-*
echo "\n\n"
echo "END REPORT LISTING"
---------------------------------------------------------------
COMMAND USED: sh tps-report-gen.sh bob
OUTPUT: (This output is generated by running the same script many times so as to generate several reports)
TPS REPORT LISTINGS
User Name: bob, Company Position: Manager, Home Directory Path: ~/home/bob
Report generated: tps-list-bob-021617018.rpt
List of TPS Reports Associated with User bob:
tps-list-bob-021617006.rpt
tps-list-bob-021617007.rpt
tps-list-bob-021617008.rpt
tps-list-bob-021617009.rpt
tps-list-bob-021617011.rpt
tps-list-bob-021617016.rpt
tps-list-bob-021617017.rpt
tps-list-bob-021617018.rpt
END REPORT LISTING