日志首页 > 批量增加用户 > [打印全文]

批量增加用户

Posted byglen | inshell | 发布日期:2006-09-27 21:51:00 | 总浏览:1222 | [评论本文]

Linux AS4下测试例子:
#cat namelistfile
aa
bb
-bash-3.00[lg]# ./adduser.sh -f namelistfile
Reading usernamelist file(namelistfile) ...
namelistfile
Now Let's set some options or you can use default settings.
Would you like to add a new group to add these users to it?
Enter (yes)to create a new group otherwise you must verify the group.
Your Answer: yes
Please enter the group's name: aa
All these users will be added to group(aa)...
Adding group ...
The group(aa) is added!
The passwd is used by default 000000.
The user(aa) is added.
Changing password for user aa.
passwd: all authentication tokens updated successfully.
The user(aa)'s password is setted!
The passwd is used by default 000000.
The user(bb) is added.
Changing password for user bb.
passwd: all authentication tokens updated successfully.
The user(bb)'s password is setted!
==================================

脚本内容如下:
#!/bin/sh
#-----------------------------------
chkUID(){
  getUID(){
    id|sed -e 's/(.*$//' -e 's/^uid=//'
    }

  if [ "`getUID`" -ne 0 ]
  then
    echo -e "\tYou are not root!"
    exit 0
  fi
  }
chkUID
usagePRT(){
  echo ${USAGE:='USAGE:' `basename Linux AS4下测试例子:
#cat namelistfile
aa
bb
-bash-3.00[lg]# ./adduser.sh -f namelistfile
Reading usernamelist file(namelistfile) ...
namelistfile
Now Let's set some options or you can use default settings.
Would you like to add a new group to add these users to it?
Enter (yes)to create a new group otherwise you must verify the group.
Your Answer: yes
Please enter the group's name: aa
All these users will be added to group(aa)...
Adding group ...
The group(aa) is added!
The passwd is used by default 000000.
The user(aa) is added.
Changing password for user aa.
passwd: all authentication tokens updated successfully.
The user(aa)'s password is setted!
The passwd is used by default 000000.
The user(bb) is added.
Changing password for user bb.
passwd: all authentication tokens updated successfully.
The user(bb)'s password is setted!
==================================

脚本内容如下:
#!/bin/sh
#-----------------------------------
chkUID(){
  getUID(){
    id|sed -e 's/(.*$//' -e 's/^uid=//'
    }

  if [ "`getUID`" -ne 0 ]
  then
    echo -e "\tYou are not root!"
    exit 0
  fi
  }
chkUID
usagePRT(){
  echo ${USAGE:='USAGE:' `basename ` '-f namelistfile'}
  }
chkFILE(){
echo
  if [ ! "`awk 'NF!=2{print NF;exit;}' `" ] && [ "`awk 'NF!=2{print NF;exit;}' `" -ne 2 ] ; then
    echo -e "The file's format is not right!"
    exit 0
  fi
  }

userCHK(){
  for USER in `awk '{print ;}' `
  do
    if grep -wq $USER /etc/passwd ; then
      echo -e "The user($USER) has been added!"
      exit 1
    fi
    if echo $USER|grep -wq "^[0-9].*" ; then
      echo -e "The user($USER)'s name is wrong format!"
      exit 1
    fi
  done
  }

setOPT(){
  echo -e "Now Let's set some options or you can use default settings."
  setGRPNAME(){
    while :
    do
    echo -e "Would you like to add a new group to add these users to it?"
    echo -e "Enter (yes)to create a new group otherwise you must verify the group."
    printf "Your Answer: "
    read grpopt
    case $grpopt in
      yes)
      printf "Please enter the group's name: "
      read grpoptnew
      if cat /etc/group|sed 's/:.*//'|grep -wq $grpoptnew ; then
        echo "The group's name($grpoptnew) exist."
        exit
      else
        grpname=$grpoptnew
        echo -e "All these users will be added to group($grpname)..."
        echo -e "Adding group ..."
        if cp /etc/group /etc/group.$$ ; then
          if groupadd $grpname ; then
            echo -e "The group($grpname) is added!"
            rm -f /etc/group.$$
            break 1
          else
            echo -e "There's something wrong when adding the group($grpname)."
            echo -e " *** Please recovered the group file. *** "
            echo -e "You can cp /etc/group.$$ to /etc/group to recover."
          fi
        else
          echo "Error! Please check the program or your disk space."
          exit 0
        fi
      fi
      ;;
      *) : ;;
    esac
    done
    }
  setGRPNAME
  }

addUSER(){
  if cp /etc/passwd /etc/passwd.$$ && cp /etc/shadow /etc/shadow.$$ ; then

  for user in `sed 's/ .*//' `
  do
  pass=`awk '{
   ~/$name/
   {print ;exit}
   } name=$user' `
  if [ -z "$pass" ] ; then
    echo -e "The passwd is used by default 000000."
    pass=000000
  fi
  if [ ${#pass} -lt 6 ] ; then
    echo -e "The user($user)'s password is too short!"
    echo -e "Use default password: 000000."
    pass=000000
  fi
  if useradd $user -g $grpname ; then
    echo -e "The user($user) is added."
      if echo $pass|passwd $user --stdin ; then
        echo -e "The user($user)'s password is setted!"
      else
        echo -e "The user($user)'s password is NOT set!"
      fi
  else
    echo -e "The user($user) is NOT add."
  fi
  done
  rm -f /etc/passwd.$$ /etc/shadow.$$
  else
    echo -e "There something wrong when backup the passwd and shadow file."
  fi
  }

if [ $# -ne 2 ] ; then
  usagePRT
  exit 0
fi

case "" in
  -f)
  if [ -f "" ] ; then
    echo -e "Reading usernamelist file""("")" "..."
    chkFILE
    userCHK
    setOPT
    addUSER
  else
    echo -e "There's no usernamelist file!"
  fi
  ;;
  *) usagePRT
  exit 0
  ;;
esac
` '-f namelistfile'}
  }
chkFILE(){
echo
  if [ ! "`awk 'NF!=2{print NF;exit;}' `" ] && [ "`awk 'NF!=2{print NF;exit;}' `" -ne 2 ] ; then
    echo -e "The file's format is not right!"
    exit 0
  fi
  }

userCHK(){
  for USER in `awk '{print ;}' `
  do
    if grep -wq $USER /etc/passwd ; then
      echo -e "The user($USER) has been added!"
      exit 1
    fi
    if echo $USER|grep -wq "^[0-9].*" ; then
      echo -e "The user($USER)'s name is wrong format!"
      exit 1
    fi
  done
  }

setOPT(){
  echo -e "Now Let's set some options or you can use default settings."
  setGRPNAME(){
    while :
    do
    echo -e "Would you like to add a new group to add these users to it?"
    echo -e "Enter (yes)to create a new group otherwise you must verify the group."
    printf "Your Answer: "
    read grpopt
    case $grpopt in
      yes)
      printf "Please enter the group's name: "
      read grpoptnew
      if cat /etc/group|sed 's/:.*//'|grep -wq $grpoptnew ; then
        echo "The group's name($grpoptnew) exist."
        exit
      else
        grpname=$grpoptnew
        echo -e "All these users will be added to group($grpname)..."
        echo -e "Adding group ..."
        if cp /etc/group /etc/group.$$ ; then
          if groupadd $grpname ; then
            echo -e "The group($grpname) is added!"
            rm -f /etc/group.$$
            break 1
          else
            echo -e "There's something wrong when adding the group($grpname)."
            echo -e " *** Please recovered the group file. *** "
            echo -e "You can cp /etc/group.$$ to /etc/group to recover."
          fi
        else
          echo "Error! Please check the program or your disk space."
          exit 0
        fi
      fi
      ;;
      *) : ;;
    esac
    done
    }
  setGRPNAME
  }

addUSER(){
  if cp /etc/passwd /etc/passwd.$$ && cp /etc/shadow /etc/shadow.$$ ; then

  for user in `sed 's/ .*//' `
  do
  pass=`awk '{
   ~/$name/
   {print ;exit}
   } name=$user' `
  if [ -z "$pass" ] ; then
    echo -e "The passwd is used by default 000000."
    pass=000000
  fi
  if [ ${#pass} -lt 6 ] ; then
    echo -e "The user($user)'s password is too short!"
    echo -e "Use default password: 000000."
    pass=000000
  fi
  if useradd $user -g $grpname ; then
    echo -e "The user($user) is added."
      if echo $pass|passwd $user --stdin ; then
        echo -e "The user($user)'s password is setted!"
      else
        echo -e "The user($user)'s password is NOT set!"
      fi
  else
    echo -e "The user($user) is NOT add."
  fi
  done
  rm -f /etc/passwd.$$ /etc/shadow.$$
  else
    echo -e "There something wrong when backup the passwd and shadow file."
  fi
  }

if [ $# -ne 2 ] ; then
  usagePRT
  exit 0
fi

case "" in
  -f)
  if [ -f "" ] ; then
    echo -e "Reading usernamelist file""("")" "..."
    chkFILE
    userCHK
    setOPT
    addUSER
  else
    echo -e "There's no usernamelist file!"
  fi
  ;;
  *) usagePRT
  exit 0
  ;;
esac