- 내용 :
ORACLE 사용자 (DBA_USER 테이블내 있는) 리스트 확인
- shell-script내용
#!/bin/bash
TEST=/oracle/work
#변수선언
echo "-----------------------------------------------------------"
echo "select Oracle User"
echo "-----------------------------------------------------------"
DATE=`date +"%Y/%m/%d %X"`
splplus -s /nolog << EOF
-- EOF는 파일입력이 더 이상 없다는 뜻
-- s옵션은 -SSQL*Plus 배너의 표시, 프롬프트 및 명령 표시를 숨기는 자동 모드를 설정
spool $TEST/ora_user_check.log
set pagesize 100
whenever sqlerror exit 1
-- sql문장 수행시 에러 발생하면 exit하고 셀에 1을 반환시켜준다.
conn / as sysdba
-- DB연결
select username from dba_users where account_status='OPEN';
-- DBA_USER테이블에서 account_status가 OPEN된 USERNAME만 출력
spool off
exit
EOF
# 여기까지 SQL로그인해서 리스트 출력
# 다시 쉘스크립트로 돌아옴
OU=(`cat $test/ora_user_check.log | sed -n '5,$p' | egrep -v "USERNAME|rows selected. |spool off|------------" | sed '/^$/d'`)
# sed -n, $p 5라인부터 파일끝까지 출력시킨다. $는 끝을표현하며, p는 출력
# sed '/^$/d' ^시작, $끝까지 d삭제 즉 /^$/행의 처음과 끝이 만나는 빈 줄을 의미하는 것 그것을 삭제한다는 것
OU_C=(`cat $test/ora_user_check.log | sed -n '5,$p' | egrep -v "USERNAME|rows selected. |spool off|------------" | sed '/^$/d' | wc -l`)
#위와 동일하지만, wc -l로 숫자를 계산
for ((j=0; j<$OU_C;J++))
do
echo "$J" "[ ${OU[j]} ]"
done
- 실행시 결과
- 실행 했을때 결과 값
'시스템 > Shell-Script' 카테고리의 다른 글
여러 서버에 스크립트 실행 (0) | 2022.11.20 |
---|---|
시스템 정보 수집 스크립트 (0) | 2021.07.09 |
사용자 계정 조회 (0) | 2021.06.21 |