roopakl |
09-11-2012 10:57 AM |
grep help
Hi All,
I have made a small bash script file to make sure whether or not user's mail ID is stored in /root/.mail_id file.
Code:
# cat grep_user
#!/bin/bash
user_id_file="/root/.users"
mail_id_file="/root/.mail_id"
user=( $(awk {'print $1'} $user_id_file) )
for i in ${user[@]}; do
/bin/grep $i: $mail_id_file >/dev/null 2>&1
while [ $? -gt 0 ]; do
echo "$i user not found in $mail_id_file file."
echo
done
done
All user names apart from those users to which password is locked are stored in /root/.users file.
Code:
# cat /root/.users
user1
user2
user30
user_41
user_50
user-65
user-68
user78
user
some_more_user
The above user's mail ID is stored in /root/.mail_id file as below
Code:
# cat /root/.mail_id
user1:user1@somedomain.com
user2:user2@somedomain.com
user30:user30@somedomain.com
user-65:user-65@somedomain.com
user_50:user_50@somedomain.com
user78:user78@somedomain.com
user_41:user_41@somedomain.com
user-68:user-68@somedomain.com
Let check whether is there any difference.
Code:
# cat /root/.users | wc -l
10
# cat /root/.mail_id | wc -l
8
So two user's entries are not in the /root/.mail_id file. So let check who are those
Code:
# bash grep_user
user user not found in /root/.mail_id file.
some_more_user user not found in /root/.mail_id file.
Giving correct output as what I had expected. I added user entry as below
Code:
# echo "user:user@somedomain.com" >> /root/.mail_id
# cat /root/.mail_id
user1:user1@somedomain.com
user2:user2@somedomain.com
user30:user30@somedomain.com
user-65:user-65@somedomain.com
user_50:user_50@somedomain.com
user78:user78@somedomain.com
user_41:user_41@somedomain.com
user-68:user-68@somedomain.com
user:user@somedomain.com
Then ran
Code:
# bash grep_user
some_more_user user not found in /root/.mail_id file.
Now also giving correct output.
I replaced "user:user@somedomain.com" with "some_more_user:some_more_user@somedomain.com"
Code:
# sed -i 's/user:user@somedomain.com/some_more_user:some_more_user@somedomain.com/g' /root/.mail_id
# cat /root/.mail_id
user1:user1@somedomain.com
user2:user2@somedomain.com
user30:user30@somedomain.com
user-65:user-65@somedomain.com
user_50:user_50@somedomain.com
user78:user78@somedomain.com
user_41:user_41@somedomain.com
user-68:user-68@somedomain.com
some_more_user:some_more_user@somedomain.com
Since I removed the entry of user:user@somedomain.com, now it should show for only "user" username. But it is not showing.
Code:
# bash grep_user
# echo $?
0
# cat /root/.mail_id
user1:user1@somedomain.com
user2:user2@somedomain.com
user30:user30@somedomain.com
user-65:user-65@somedomain.com
user_50:user_50@somedomain.com
user78:user78@somedomain.com
user_41:user_41@somedomain.com
user-68:user-68@somedomain.com
some_more_user:some_more_user@somedomain.com
# cat /root/.users
user1
user2
user30
user_41
user_50
user-65
user-68
user78
user
some_more_user
The username called "user" is there in /root/.users file but the entry is not in /root/.mail_id file. But why it is not showing as "user user not found in /root/.mail_id file as before".
I really appreciate your kind help.
Thanks & Regards
|