리눅스 계정중 실제 사용중인 계정의 패스워드 만료기한과 남은 일수를 조회 할 수 있다.
고려사항
- 계정 쉘이 /bin/bash인 계정만 정보수집
- 출력 인코딩이 한글과 영어일때를 고려해야 함
- 출력결과 호스트네임,계정명1|패스워드만료기한|만료남은일수, 계정명2|패스워드만료기한|만료남은일수
#!/bin/bash
list=`cat /etc/passwd | grep '/bin/bash' | awk -F ':' '{print $1}'`
current_date=`date +%Y-%m-%d`
hostname=`hostname -s`
result="$hostname,"
for server in $list;do
#echo "server $server"
expiredate=`chage -l $server | head -n2 | tail -n1 | awk -F ':' '{print $2}'`
year=`echo $expiredate | awk -F ',' '{print $2}'`
month=`echo $expiredate | awk -F ',' '{print $1}' | awk '{print $1}'`
day=`echo $expiredate | awk -F ',' '{print $1}' | awk '{print $2}'`
#expiredate="never"
if [ "$expiredate" = "안함" ];then
result+="$server|never|never,"
elif [ "$expiredate" = ' never' ] ;then
result+="$server|never|never,"
else
case $month in
1월| Jan) month="01";;
2월| Feb) month="02";;
3월| Mar) month="03";;
4월| Apr) month="04";;
5월| May) month="05";;
6월| Jun) month="06";;
7월| Jul) month="07";;
8월| Aug) month="08";;
9월| Sep) month="09";;
10월| Oct) month="10";;
11월| Nov) month="11";;
12월| Dec) month="12";;
esac
expiredate="$year-$month-$day"
date_diff=$(echo $(( ($(date -d "$expiredate" +%s) - $(date -d "$current_date" +%s)) / 86400 )))
result+="$server|$expiredate|$date_diff,"
fi
done
echo "$result"
반응형
'프로그래밍 > shellscript' 카테고리의 다른 글
[쉘 스크립트] 리눅스 for문 Syntax error : Bad for loop variable (0) | 2023.11.13 |
---|---|
[shellscript] 쉘스크립트 sed 문자 정확히 일치 할 때 바꾸기 (0) | 2023.11.03 |
[shellscript] grep -r 하위 폴더 포함 파일 내용 검색하기 (0) | 2023.10.24 |
[shellscript] awk v옵션 문자를 찾고 같은 행 특정 열 치환하기 (0) | 2023.04.18 |
[powershell] 파워쉘 윈도우 계정 패스워드 변경 (0) | 2022.07.26 |
댓글