Scripting Help.

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Scripting Help.
# 1  
Old 11-27-2011
Error Scripting Help.

Sorry about the first post, here's one using the template, the code has changed a little bit. I got the Shell error loop working, but not the way it's supposed to be. It's supposed to repost the list and everything. Same with the username error message.

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

Write a shell script to add individual users to a Linux system. The script should prompt for the username to create and ensure the username is unique on the system. (Be sure your check for uniqueness actually works-bo, bob, and bobby should all be creatable, if they do not already exist on a system.)
The script should also obtain the user's full name and obtain the preferred user shell. (Be sure to display a valid list of shells prior to shell selection.)

2. Relevant commands, code, scripts, algorithms:

I mainly need help with an error loop, not sure what should be put in here.

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

Code:
#! /bin/bash
echo ""
echo "Enter your username: "
read userName
cut -d: -f1 /etc/passwd | grep $userName > /dev/null
OUT=$?
if [ $OUT -eq 0 ];
then
	echo "The user $userName already exists! Please try again: "
read userName
fi;
echo "Enter your full name: "
read fullName
echo "Available Shells"
echo "----------------"
echo "/bin/sh"
echo "/bin/bash"
echo "/sbin/nologin"
echo "/bin/tcsh"
echo "/bin/csh"
echo "/bin/ksh"
echo "Enter the user's shell: " 
read regShell
until [ $regShell = "/bin/sh" ] || [ $regShell = "/bin/bash" ] || [ $regShell = "/sbin/nologin" ] || [ $regShell = "/bin/tcsh" ] || [ $regShell = "/bin/csh" ] || [ $regShell = "/bin/ksh" ]
do
echo "Enter your shell: "
read regShell
done
useradd -c $fullName -d /home/$userName -s $regShell $userName

4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):
Bismarck State College, Bismarck ND, US, Nick See, CIS 223-01
# 2  
Old 11-27-2011
Here's a small script that might give you an idea about doing your user name error loop. It's not the only way, but should serve as a clue. It continues to prompt until you enter the command "quit."

Code:
#!/usr/bin/env bash

c=""
while [[ -z $c ]]
do
    printf "enter cmd "
    read c
    if [[ $c != "quit" ]]
    then
        c=""
    fi
done
exit

You also need to think about the full name. I'm assuming it will have a space which unless properly handled on the command line to useradd might cause problems.

Hope this helps.
# 3  
Old 11-27-2011
could I just put something like
Code:
echo "Enter your username: "
read userName
cut -d: -f1 /etc/passwd | grep $userName > /dev/null
OUT=$?
while [ $OUT -eq 0 ]
do
echo "The user $userName already exists! Please try again: "
read userName
cut -d: -f1 /etc/passwd | grep $userName > /dev/null
OUT=$?
done

.. no, that wouldnt work because then there is no if statement to move on to the next part bleh I really am not understanding this..
# 4  
Old 11-27-2011
Actually, you don't need the if. If grep returns a non-zero (no match) then the while will stop executing and the username in the variable will not exist in /etc/passwd.

Your problem here is that if the user "scooter" exists but "sco" does not, it will not let you create "sco" because the command cut -d: -f1 | grep "sco"would return non-zero (sco would be a match for scooter). Have a look at the manual page for grep and see if there are any options that you might add to ensure that "sco" and "scooter" would not be a match.
This User Gave Thanks to agama For This Post:
# 5  
Old 11-27-2011
Alright so I pretty much have the script working, it's not exactly how the teacher wants. It doesn't loop the whole bash shell list and the Enter username parts. But like you said, I am running into the grep error, any hints for a quick fix to that would be awesome, right now I'm searching all the pages on grep I can looking for the correct filter to put in.
Could I just put it like | grep -x $userName ? because according to linuxabout.com -x will only take the whole thing.
Anyways, in case anyone cares here's the code I came up with so far.
Code:
#!/bin/bash
echo ""
echo "Please enter your username: "
read userName
cut -d: -f1 /etc/passwd | grep $userName > /dev/null
OUT=$?
while [ $OUT -eq 0 ]
do
echo "That username already exists, please try a different name: "
read userName
cut -d: -f1 /etc/passwd | grep $userName > /dev/null
OUT=$?
done
echo "Please enter your full name."
read fullName
echo "Available Shells"
echo "----------------"
echo "/bin/sh"
echo "/bin/bash"
echo "/sbin/nologin"
echo "/bin/tcsh"
echo "/bin/csh"
echo "/bin/ksh"
echo "Enter the user's shell: "
read regShell
until [ $regShell = "/bin/sh" ] || [ $regShell = "/bin/bash" ] || [ $regShell = "/sbin/nologin" ] || [ $regShell = "/bin/tcsh" ] || [ $regShell = "/bin/csh" ] || [ $regShell = "/bin/ksh" ]
do
echo "Invalid shell, try again: "
read regShell
done
useradd -c "$fullName" -s $regShell $userName
if [ $? = 0 ]; then
echo "User was created successfully."
fi

edit: grep -x did nothing, even tried grep -x "^$userName$", that didn't work. My textbook only has 5 pages about grep, none of which describe they just say use it, and the only extension they use is -i which makes the command disregard caps. hrmm.

Last edited by apzombie; 11-27-2011 at 10:16 PM..
# 6  
Old 11-27-2011
Interesting. I did have another option in mind (-w), but -x should have worked too since cut output is just the one word which would/should satisfy -x too. When I tried -x with a snipit I copied from you post it worked just fine.

---------- Post updated at 22:03 ---------- Previous update was at 21:56 ----------

Looked more closely at your -x example. You might have needed "^$userName\$"
# 7  
Old 11-27-2011
right now I'm just stuck on the grep issue.. I've tried everything -w, -x, -x ^'$userName\$', -w ^$userName\$, ^$userName$@, ^$userName\$@, ^$userName$*

Any clues as to what I could use? If user Bob exists Bo cannot be created. Smashing my head on my desk right now. The script works.. but like I said, I can't create Bo if Bob already exists.
Code:
#!/bin/bash
echo ""
echo "Please enter your username: "
read userName
cut -d: -f1 /etc/passwd | grep $userName > /dev/null
OUT=$?
while [ $OUT -eq 0 ]
do
echo "That username already exists, please try a different name: "
read userName
cut -d: -f1 /etc/passwd | grep -w '^$userName$' > /dev/null
OUT=$?
done
echo "Please enter your full name."
read fullName
echo "Available Shells"
echo "----------------"
echo "/bin/sh"
echo "/bin/bash"
echo "/sbin/nologin"
echo "/bin/tcsh"
echo "/bin/csh"
echo "/bin/ksh"
echo "Enter the user's shell: "
read regShell
until [ $regShell = "/bin/sh" ] || [ $regShell = "/bin/bash" ] || [ $regShell = "/sbin/nologin" ] || [ $regShell = "/bin/tcsh" ] || [ $regShell = "/bin/csh" ] || [ $regShell = "/bin/ksh" ]
do
echo "Invalid shell, try again: "
read regShell
done
useradd -c "$fullName" -s $regShell $userName
if [ $? = 0 ]; then
echo "User was created successfully."
fi

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Web Development

Perl scripting or shell scripting?

i am going to study any one of the scripting languages mentioned above(shell 0r perl scripting) . Which is having more scope for a fresher? (1 Reply)
Discussion started by: Anna Hussie
1 Replies

2. What is on Your Mind?

Shell Scripting vs Perl scripting

Gents, I have been working in a Solaris/Unix environment for about 9 months. I took some linux classses online before getting the job. But, I am not very good at scripting. I want to learn how to script. Do you think that I should start with Shell scripting or Perl? I wanted to continue with... (2 Replies)
Discussion started by: Pouchie1
2 Replies

3. Android

Android Scripting Environment: Shell Scripting and Android

I just upgraded to Android 2.2 from 2.1. The GPS issue that was troublesome in 2.1 seems to have been fixed. Some of web browsing seems faster, but it could just be my connection is better today ;) Flash works in some browsers but not very good and it is too slow for Flash apps designed for... (0 Replies)
Discussion started by: Neo
0 Replies

4. What is on Your Mind?

Shell scripting vs Perl scripting

Hi all, I would like to start developping some good scripting skills. Do you think it would be best to start with shell scripting or Perl? I already got a fundation, really basics, in perl. but I am wondering what would be best to be good at first. Can you please help me determine which one to... (14 Replies)
Discussion started by: Pouchie1
14 Replies

5. Shell Programming and Scripting

Call Shell scripting from Perl Scripting.

Hi How to call a shell scripting through a Perl scripting? Actually I need some value from Shell scripting and passes in the Perl scripting. So how can i do this? (2 Replies)
Discussion started by: anupdas
2 Replies

6. UNIX for Dummies Questions & Answers

Scripting Help

Hello all. Like Ive stated before, I am new to world of Unix. I was given the tast to create a script that will concatenate 20 files into one file. I know that the cat command is to be used but I am looking for something to get started on. Again, basically I need to wrtie a script that whill... (3 Replies)
Discussion started by: ndoggy020
3 Replies

7. UNIX for Advanced & Expert Users

Need help on scripting

in unix bc command is used as calculator and also for conversion, i want to convert 5f to decimal. but bc dont consider 5f as hex value it considers 5F as hex value. I get 5f from other iteration so i cant change that f to F...is there any way to convert 5f to decimal ot 5f to 5F :rolleyes: (2 Replies)
Discussion started by: abhinandantn
2 Replies

8. Shell Programming and Scripting

difference between AIX shell scripting and Unix shell scripting.

please give the difference between AIX shell scripting and Unix shell scripting. (2 Replies)
Discussion started by: haroonec
2 Replies

9. Shell Programming and Scripting

scripting guru's pls help me with scripting on AIX

can someone pls help me with the script for a files coming from one system to a particular directory and i want to write a script to move those files to another directory on different system by renaming the files... pls someone help me on this... thanking in anticipation.... (1 Reply)
Discussion started by: thatiprashant
1 Replies

10. AIX

New to scripting

We have a scripting requirement, Background: On a particular path, we compress a load of log files into tar.gz. This is done on an hourly basis throughout the day and it produces files of the following format, 2005-08-05-00-021031.tar.gz as an example. This is done by a script. We need: ... (2 Replies)
Discussion started by: rajesh_149
2 Replies
Login or Register to Ask a Question