Shell 스 크 립 트 간단 한 연습

3612 단어 Shell
Linux Shell 스 크 립 트 의 간단 한 연습
한 열성 적 인 동 료 는 매일 새벽 'xyz' 로 시작 하 는 20 명의 사용 자 를 만 들 고 비밀 번 호 를 만 들 고 (로그 인 을 허용 하지 않 음) 원 키 를 만들어 이 사용자 들 의 스 크 립 트 를 삭제 하 라 고 제안 했다.
대략적인 사고 방식.
사용자 생 성 스 크 립 트 를 만 듭 니 다. crontab 정시 작업 은 매일 새벽 12 시 에 실 행 됩 니 다. 사용자, 비밀번호, 생 성 시간 을 로그 파일 에 출력 합 니 다.사용자 가 스 크 립 트 를 삭제 하고 crontab 의 정시 작업 을 취소 하 며 로그 파일 을 읽 고 만 든 사용 자 를 삭제 하 며 사용자 스 크 립 트 를 삭제 하고 기록 을 삭제 합 니 다.
서투른 각본
Centos 7 에서 테스트 합 니 다.
#!/bin/sh
#“here document”将ADD内容输出到”opt“目录下的useradd.sh
cat << 'ADD' > /opt/useradd.sh
#!/bin/sh
#记录时间
echo "Time:`date`" >> /var/log/useradd.log
for n in `seq 1 20`;do
    user="xyz_${RANDOM}"
    passwd=`date +%s | sha256sum | head -c 16`
    useradd -s /sbin/nologin ${user}
    echo "${passwd}" | passwd --stdin ${user}
    #将用户名和密码输出到"/var/log/useradd.log"
    echo -e "user:${user}
passwd:${passwd}
"
>> /var/log/useradd.log done ADD #ADD的内容到此结束 #赋予useradd.sh执行权限 chmod +x /opt/useradd.sh #每天凌晨12点执行 echo "0 0 * * * root /opt/useradd.sh > /dev/null 2>&1" >> /etc/crontab #开始我们的删除用户脚本 cat << 'DEL' > /opt/userdel.sh #!/bin/sh #逐行读取useradd.log,给list for list in `cat /var/log/useradd.log`; do #简单判断一下,读取的这行是不是我们的用户名 if [ ${list:0:5} = user: ]; then #获得用户名并删除用户 username=`echo ${list} | sed 's/user://g'` userdel -r ${username} fi done #删除定时执行 sed -i '\/opt\/useradd.sh/d' /etc/crontab #清理 rm /opt/useradd.sh rm /var/log/useradd.log rm $0 DEL #DEL的内容到此结束 #同样,赋予执行权限 chmod +x /opt/userdel.sh rm $0

좋은 웹페이지 즐겨찾기