업무 하다 보면, 자주 사용하는 게 셸 스크립트인데, 급하다는 핑계로 매번 복붙 해서 수정해서 사용한 게 많다.
어쨌든 시스템의 자동화를 잘하려면 셸 스크립트가 중요하니 인터넷, 서적 등을 통해 공부한 것을 작성해보자.
- 만든계기 :
시스템상의 계정이 있는지 확인하고, 계정이 있으면 홈 디렉터리와 같이 보여준다. 없으면 존재하지 않음이라고 표현한다.
- 내용 :
1. /etc/passwd 로 사용자 계정만 추출한다.
2. 계정을 입력받는다.
3. userhome디렉토리를 변수로 받아둔다.
4. for문으로 위의 /etc/passwd 변수를 돌린다.
5. if문으로 user_check변수를 돌리면서, 입력받은 값이 있는지 계속 돌린다.
있으면 계정과 홈디렉토리를 echo출력으로 보여준다.
이때 check라는 변수에 1을 주면서, break로 for문을 빠져나갈 수 있게 한다.
6. 위의 조건이 아니라면 check 0을 주고 if문을 끝낸다.
7. 다시 if문을 하나 주고, check변수가 0이면 해당 계정은 존재하지 않음으로 보여준다.
8. 끝
- shell-script 내용
#!/bin/bash
user_check=`cat /etc/passwd | awk -F ":" '{print $1}'`
echo "계정을 입력하세요"
read input
user_home=`cat /etc/passwd | grep $input | awk -F ":" '{print $6}'`
for ch in $user_check
do
if [ $ch = $input ]; then
echo "$input 계정은 존재 하며, $user_home 홈디렉토리를 사용하고 있습니다. "
check=1
break
else
check=0
fi
done
if [ $check -eq 0 ]; then
echo "$input 계정은 존재 하지 않습니다."
else
exit 0
fi
- 실행시 결과
[opc@seonggi-centos work]$ sh -x ./user_check.sh
++ cat /etc/passwd
++ awk -F : '{print $1}'
+ user_check='root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
libstoragemgmt
rpc
abrt
rpcuser
nfsnobody
sshd
postfix
chrony
ntp
tcpdump
oracle-cloud-agent
opc
oracle-cloud-agent-updater
ocarun'
+ echo '계정을 입력하세요'
계정을 입력하세요
+ read input
opc
++ cat /etc/passwd
++ awk -F : '{print $6}'
++ grep opc
+ user_home=/home/opc
+ for ch in '$user_check'
+ '[' root = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' bin = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' daemon = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' adm = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' lp = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' sync = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' shutdown = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' halt = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' mail = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' operator = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' games = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' ftp = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' nobody = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' systemd-network = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' dbus = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' polkitd = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' libstoragemgmt = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' rpc = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' abrt = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' rpcuser = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' nfsnobody = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' sshd = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' postfix = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' chrony = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' ntp = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' tcpdump = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' oracle-cloud-agent = opc ']'
+ check=0
+ for ch in '$user_check'
+ '[' opc = opc ']'
+ echo 'opc 계정은 존재 하며, /home/opc 홈디렉토리를 사용하고 있습니다. '
opc 계정은 존재 하며, /home/opc 홈디렉토리를 사용하고 있습니다.
+ check=1
+ break
+ '[' 1 -eq 0 ']'
+ exit 0
[opc@seonggi-centos work]$
- 실행 했을때 결과 값
'시스템 > Shell-Script' 카테고리의 다른 글
여러 서버에 스크립트 실행 (0) | 2022.11.20 |
---|---|
ORACLE 사용자 리스트 확인 스크립트 (0) | 2021.07.10 |
시스템 정보 수집 스크립트 (0) | 2021.07.09 |