script to mail users on comand line

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions script to mail users on comand line
# 1  
Old 11-11-2011
script to mail users on comand line

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

1. The problem statement, all variables and given/known data:

Write a shell script to send a customized mail message to the users listed on the command line by login (user) name, only if they are currently logged on. If no users are listed on the command line an error message should be printed. In the mail message, you should use the full (real) name from the passwd file (/etc/passwd). You also need to sign the script with the real name of the person who is running the script. This can be derived from the $USER environment variable and looking up the value in the password file.
An error message should be printed if the user does not exist in the passwd file.

PLEASE ONLY SEND THIS MESSAGE TO USERS WHICH YOU KNOW PERSONALLY.

You can always use yourself and me as a test case.
The real name of the user of the script should only be computed once.
A "Here-Document (In-Line Redirection)" should be used for the mail message. No temporary files should be used.
The message should be as follows:
Hello "INSERT THE USERS REAL NAME FROM THE PASSWORD FILE",
Please ignore this mail. My instructor requires that I send this message as part of an assignment. The current time and date is . Have a nice day.
"insert the real name of the person running the script - do not hard code the value"


2. Relevant commands, code, scripts, algorithms:
sed, if-loop, ./user


3. The attempts at a solution (include all code and scripts):

Code:
#!/bin/bash

#Assignment 4 - Mail Users

if who | sed 's/ .*//g' | sort -u | grep "$*" > /dev/null
then
echo "$*" is logged in
else
echo "$*" not logged in
fi
if [ "$*" -eq 0 ]
then
echo no user specified
fi

mail "$*" << message
Hello `awk -F\: '{print $5}' /etc/passwd` please ignore this mail. My instructor requires that I send this message as part of an assignment for class 92.312. The current time and date is `date`. Have a nice day `$USER`.

END

4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):
Umass-lowell, Lowell, Massachussetts. Mrichard. Unix shell programing.

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).
# 2  
Old 11-11-2011
You should think in terms of looping through the list of names passed in on the command line. Using $* will expand to all of the names that were given to the script as parameters. If only one name is given, then you'll not see a problem, but when two or more are given things will break if you don't loop and treat them one at a time.

You should also run the command that you're using to search the password file manually from the command line and see what the results are. Do you really want everything that it generates to go into the mail?
# 3  
Old 11-11-2011
So should I do
Code:
 $@

instead or should I do
Code:
 $1

but would that do if there are multiple names on the command line like the assignment says like if there is
sali1206
fake329
unreal896

and I do
Code:
 user sali1206 fake329 unreal896

would that mail all the users on the list. Also does my here in document look okay?
# 4  
Old 11-11-2011
Quote:
Originally Posted by alis
but would that do if there are multiple names on the command line like the assignment says like if there is
sali1206
fake329
unreal896
Yes you should use $1 inside of a loop. You can provide all names on the command line to mail, however since you are to personalise the message to each, you need to create a new message for each. So, looping through each parameter on the command line you pick up their name, find their full name in passwd, and send the mail message to them.

The end of document token that you supply on the << line needs to match what you use at the end. Right now you've got mismatched strings.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to write a UNIX script to send a mail to the respective individual users about their groups?

Hi Team, I got a requirement to send a mail to the individual users of a unix server about their respective groups. can some one help me to provide the script as I am unable to write that. I tried with below lines but I come out with errors. cat /etc/passwd | awk -F':' '{ print $1}' |... (6 Replies)
Discussion started by: harshabag
6 Replies

2. Shell Programming and Scripting

Need comand or script for append text after searching for the desired string

Hi all, i have a generated report in unix in the following command like input.txt 47.85,10 0124,42.35,8 0125,3.5,2 the input file format is fixed I need the my output file with append text as below output.txt 0124 amount:42.35 0125 amount:3.5 0124 count : 8 0125... (34 Replies)
Discussion started by: hemanthsaikumar
34 Replies

3. Shell Programming and Scripting

Preserve extented ascii character when run echo comand inside bash script

Hi everyone, I'm echo some text with extended ascii characters as below: echo -e "Pr\xE9sentation du spectacle" > output or echo -e "Présentation du spectacle" > outputIf I open the file created I see this text Présentation du spectacleThe text is shown correctly in this created file when... (7 Replies)
Discussion started by: Ophiuchus
7 Replies

4. Shell Programming and Scripting

How to get users history as mail..

Hi all, Thanks in Advance, i want to view my users commands, what commands they are using in their terminal like that, how to automate this history process daily. (6 Replies)
Discussion started by: anishkumarv
6 Replies

5. Shell Programming and Scripting

Mail to a file of users

How can I send the same form email to multiple users, but with variances like their username, password, and login host or environment? At work we use vdi's which are extremely slow - especially opening Outlook to open a form letter saved on Sharepoint. I was wondering if I could put the users'... (2 Replies)
Discussion started by: MaindotC
2 Replies

6. Shell Programming and Scripting

Send e-mail to users

Dear all, The perl script to send e-mail is working in my current script. #This part of the script will send the email notification my $to='mohamed.rahman@noridian.com'; my $from='xyz@hotmail.com'; my $subject='POS_CODES_38 DATA LOADED SUCCESSFULLY.'; my $message='The total no. of files... (2 Replies)
Discussion started by: msrahman
2 Replies

7. Linux

Memory monitoring and sending alert mail to users in network using shell script

i m workiing on a shell script which may monitors network memory and send alert to user if it increase a threshold (1 Reply)
Discussion started by: navdeep5673
1 Replies

8. Ubuntu

script for memory monitoring and sending mail to users in network

I m working on a script which monitors the disk usage and send a mail to the users if it reaches a limit of 90%. hlp me (2 Replies)
Discussion started by: navdeep5673
2 Replies

9. AIX

Command line/Script to send E-mail with HTML body and binary attachment

I apoligize for the cross-post but I'm not getting much in the way of help in the dummies forum: I'm trying to script sending an e-mail message on an AIX 5.x server with the following requirements: 1. command line switch to specify file name containing message body in HTML format 2. command... (3 Replies)
Discussion started by: G-Man
3 Replies

10. Shell Programming and Scripting

Testing a comand in the script

Hi everyone , i am new to shell scripting and am having some problem to test if this line has been executed well and display a pass message on the screen or fail if not sqlplus XXTEST/$2 <<END > $XXTEST_TOP/log/$0.log @$XXTEST_TOP/admin/sql/XXTEST_SPE1_XX_QUOTE_DETAILS_TBL.sql XXTEST$2... (2 Replies)
Discussion started by: Lutchumaya
2 Replies
Login or Register to Ask a Question