Shell 스 크 립 트 간단 한 연습
3612 단어 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.