본문 바로가기
Linux

SAN Usable Port 수 조회 스크립트

by 도경다경 2022. 12. 5.
반응형

운영관리는 귀찮음의 연속이다.

 

몇 대 안될때는 일일히 들어가서 조회해도 별 문제가 되지 않는데, 이게 일정 수량을 넘어가면 귀찮기 그지 없다.

이걸 관리해주는 솔루션이 있으면 좋겠지만, 관리자 입장에서 그런데 돈을 쓰는 사업주를 본 적이 거의 없다.

 

그러니 어쩔 수 있나. 억울하면 내가 만들어야지.

 

첫번째는 ansible로 트라이 했는데

왠 걸... ansible로 하려면 Failed to create temporary directory 라는 에러가 발생하면서 실행이 안된다.

조회 대상 $homedir/.ansible/tmp 디렉토리를 만들어야 하는데 권한이 없어서 만들 수가 없다.

내가 권한이 없는 계정으로 해서 그럴 수도 있는데 "admin" 계정으로 해도 안되니 어쩔 수 없다.

ssh로 도전.

 

처음에는 디렉토리를 만들고 다음과 같이 스위치 갯수만큼 스크립트 실행했다.

 

mkdir -p /rawdata/san/`date +"%Y%m%d"`

LOGDIR=/rawdata/san/`date +"%Y%m%d"`

sshpass -p [password] ssh [id]@[san ip] show interface brief > $LOGDIR/[장비명].out

 

그런데 이게 무슨 초짜같은 더러운...

 

패스워드 입력하는게 말이 되나? 보안상?

key 전달해주고 패스워드 없이 가자

 

B서버에 공개키 전달(개인키는 id_rsa, 공개키는 id_rsa.pub)

# ssh-copy-id -i ~/.ssh/id_rsa.pub B_username@B_ip

 

두둥~ 대상 서버에 임시 폴더 생성 권한 없음....admin이잖아...

시부랄 것....

패스워드 hard coding 극혐인데... 방법은 찬찬히 찾아보자

 

어쩔 수 없이 위 스크립트대로 실행

 

자~ 결과가 /rawdata/san/`date +"%Y%m%d"` 에 떨어졌다. 파일명대로 슝슝

 

그런데 이걸 또 언제 일일히 열어봐

그래서 스크립트 시전

가랏~ 쪽팔리게 이중 for 문!

 

for LOGDIRS in `find /rawdata/san -type d | grep 20`   

## grep 20 한 이유는 find 하면 해당 위치 디렉토리도 잡는다 그래서 날자있는 애들만 대상으로 하려고

do

    echo "" > $LOGDIRS/result.out

    for LOGFILES in `find $LOGDIRS -type f`

    do

        echo $LOGFILES >> $LOGDIRS/result.out

        cat $LOGFILES | grep fc1 | grep up | wc -l >> $LOGDIRS/result.txt

    done

done

 

날짜 디렉토리 있으면 있는 것마다 다 조회해서 결과값 생성

당연히 대상 추가되면 알아서 계산되니 좋다.

 

그래도 쪽팔린데 더 파기 귀찮다...아...귀차니즘...

 

 

반응형

댓글