SHELL 프로 그래 밍 연습 - 사용자 와 그룹 삭제 대량 생 성

4052 단어
1. 수요
reed 는 시스템 관리자 입 니 다. 한 교실 의 서버 에 선생님 과 학생 사용 자 를 추가 해 야 합 니 다. 수 동 으로 추가 하 는 것 은 너무 번 거 롭 습 니 다. bash 스 크 립 트 userctr. sh 를 만들어 서 사용 자 를 대량으로 추가 하고 삭제 하 십시오.선생님 아 이 디, 학생 아 이 디 와 학생 수 는 매개 변 수 를 사용 하여 제어 합 니 다.
userctr. sh 스 크 립 트 가 실 행 될 때 네 개의 인 자 를 포함 합 니 다.
bash userctr.sh 操作(add或者del)教师名 学生名前缀 学生数量

스 크 립 트 가 성공 적 으로 실 행 된 후 교사 사용자 1 명 과 학생 사용자 몇 명 을 만 들 고 다음 조건 을 만족 시 킵 니 다.
1) 학생 수 매개 변수, 매개 변수 범 위 는 1 ~ 10 입 니 다. 10 을 초과 하거나 정수 가 아 닌 경우 잘못 인쇄 된 parameter error 2) 학생 이름 접 두 사 는 문자열 입 니 다. 소문 자 만 포함 할 수 있 습 니 다. 그렇지 않 으 면 잘못 인쇄 된 parameter error, 접두사 뒤 에는 숫자 서열 3) 사용자 마다 무 작위 6 자리 비밀 번 호 를 설정 합 니 다.명령 을 추가 한 후 사용자 이름과 해당 하 는 암 호 를 출력 합 니 다 4) 사용자 이름 이 이미 존재 한다 면 기본적으로 이 사용 자 를 만 들 필요 가 없습니다.
스 크 립 트 를 실행 하 는 범례:
#添加一位叫reeeed教师,3位叫deeeer的学生
[root@reedoracle ~]# ./userctr.sh add reeeed deeeer 3
User [reeeed] create successfully.
reeeed:2bf168
User [deeeer1] create successfully.
deeeer1:39adcd
User [deeeer2] create successfully.
deeeer2:a12201
User [deeeer3] create successfully.
deeeer3:4088d2
#参数不正确时提示
[root@reedoracle ~]# ./userctr.sh add 123 321 11
Parameter error!
#输入不规范时的提示
[root@reedoracle ~]# ./userctr.sh add 123 321 
--Usage:
        ./userctr.sh [add/del] [Teacher'sName] [Student'sName] [The number of Students]
        ex.
        ./userctr.sh add teacher stu 3
--
        add:useradd username
        del:userdel username
        [Teacher'sName]:teacher's name
        [Student'sName]:student's name,just only the beginning of a lowercase letter 
        [The number of Students],only [1-10]

2. 어 려 운 점 과 어 려 운 점:
1. 입력 한 매개 변수 가 정확 하고 규범 적 인지 판단 해 야 합 니 다. 2. 여러 조건 판단 문 구 를 삽입 합 니 다. 3. 무 작위 로 비밀 번 호 를 생 성 합 니 다.
지식 포인트:
1. SHELL 의 if/for 문법 2. SHELL 인자 사용 3. 사용자 생 성
구체 적 인 실현:
[root@reedoracle ~]# cat userctr.sh 
#!/bin/bash

#func:add or del user
#author:reed

. /etc/profile

UserCtr=$1
TeacherName=$2
StudentName=$3
StudentNumber=$4

Usage(){
cat<>/dev/null 2>&1
                        if [ $? -ne 0 ];then
                                useradd $2
                                TeacherPasswd=$(date|md5sum|cut -c 1-6)
                                echo $TeacherPasswd|passwd --stdin $2 >>/dev/null 2>&1
                                echo "User [$2] create successfully."
                                echo "$2:$TeacherPasswd"
                        else
                                echo "The user [$2] is exist."
                        fi
                        for ((num=1;num<=$4;num++));do
                                id ${3}${num} >>/dev/null 2>&1
                                if [ $? -ne 0 ];then
                                        useradd ${3}${num}
                                        StudentPasswd=$(echo $RANDOM|md5sum|cut -c 1-6)
                                        echo $StudentPasswd|passwd --stdin ${3}${num} >>/dev/null 2>&1
                                        echo "User [${3}${num}] create successfully."
                                        echo "${3}${num}:$StudentPasswd"
                                else
                                        echo "The user [${3}${num}] is exist."
                                fi
                        done
                else
                        echo "Parameter error!"
                        exit 10000
                fi
        elif [ $1 == "del" ];then
                echo "Please delete user manually."
        else
                echo "Parameter error!Please input [add] or [del]."
                exit 10086
        fi
else
        Usage
fi

주: "del"사용자 가 삭제 하 는 원 리 는 사용 자 를 만 드 는 것 과 마찬가지 로 게 으 르 게 썼 습 니 다.

좋은 웹페이지 즐겨찾기