Pages

Thursday 25 August 2011

How to write a shell script professionally and why to write it?


How to write a shell script professionally and why to write it?
Most of the time when we work and write shell script we write on the go not considering others who want to understand it. Suppose you write a shell script and did not given any info what that shell script do, all your efforts will be in vain if a new system admin is unable to understand it. We have to make a habit to give as much as info in the script what actually script is how to run it etc. Let’s see how to write a script in professional manner.
Always make sure that to write some Meta data which give info about the script at the start of the script.
The Meta data should contains below details 5 lines, if you want you can add more depending on your requirement.
Line1: Shebang statement(#!/bin/bash)
Line2: Script purpose:
Line3: Author details
Line4: Creation date
Line5: Modification date and details
Here is the Meta data example for your reference.
#!/bin/bash

#Purpose: To automate user creation

#Author: Surendra Kumar Anne

#Date/Time: 06-08-2011.19:10

#Modified date: 2011-00-00: Reason for modification.
Tip1: Once the Meta data is completed try to give as much info as possible if there is a complex command which you written.
Tip2: When writing shell scripts try to use vim editor instead of just normal vi editor. Vim editor uses color codes for different commands and control statements. See below example
Tip3: Try to check if all the open brackets are closed or not before executing it.
Tip4: Try to use $? Inbuilt variable to check the previous command status.
TIP5: Try to use tab’s for better writing of the script to make others to understand quickly..
Let’s see this with an example.
Script:
No format and just vi editor..
ls –l 

a=`echo $?`

if [ $a –eq 0 ]

then 

echo ls executed successfully.

elif [ $a –eq 1 ]

echo ls command does not exits

else 

echo check your ls command
fi
With systematic format and using vim editor..
ls –l 

a=`echo $?`

if [ $a –eq 0 ]

 then   echo ls executed successfully.

 elif [ $a –eq 1 ]

 echo ls command does not exits

 else 

 echo check your ls command

fi
How are second script and first script? Both are same but understanding second one is very easy and easy to find If there is any syntax error when compared to first one.
Here is one example to show you how to write a script.
#!/bin/bash

 #Author: Surendra Kumar Anne

 #Purpose: To automate user creation

 #Date/Time:06-08-2011.19:10

mkdir -p /home/admin/useraccounts

for (( i=0; i<=500; i++ ))

 do

#users are added with their prefix as baci, so users will be baci1, baci2, baci3 etc..

 useradd baci$i

#The below command is used to generate a 8 character length password string

 < /dev/urandom tr -dc A-Na-n1-9_ | head -c8 > /tmp/passwd.txt

#the below command will set password to user by taking input from /tmp/passwd.txt

 cat /tmp/passwd.txt | passwd --stdin user$i

 echo -e "Username:baci$i" > /home/admin/useraccounts/baci$i

 echo -e "password:" >> /home/admin/useraccounts/baci$i

 cat /tmp/passwd.txt >> /home/admin/useraccounts/baci$i

done

rm -rf /tmp/passwd.txt
Please feel free to comment on this post if you know a more better techniques to write a shell script.

No comments:

Post a Comment

Twitter Bird Gadget