-
전국에 있는 199개의 장비를 업데이트 하라고요?ME_BUILDING 2021. 2. 25. 10:35
동기에게 업무분장이 내려왔다. 제목 그대로다.
나에게 내려오지 않았음을 천만다행이라고 여기고 있었는데 순간 든 생각.
' 아 저걸 도와야 내 실력이 늘겠다 '
바로 동기에게 도와주겠다고 얘기를 한 후 FTP를 이용해 199개의 장비의 소스코드를 하나하나 바꿔줘야하는건가..
이 모니터링 디바이스 설계자는 도대체 뭐하는 인간이길래 처음에 설계할 때 업데이트용으로 형상관리나 뭐 그에 준한 조치를 하지 않은거지 원망도 했다.
내가 먼저 자동화를 해야겠다 하고 동기에게 말을 한것은 맞는데 막상 하자니 너무 괴롭더라.
입사한지 이제 3개월차에겐 너무 어려운 일이 아닌가? 아님 말고..
어찌저찌 찾은 키워드. 'batch' 와 '쉘 스크립트' 였다.
여러 삽질을 해본 결과 batch파일로 for loop를 디바이스 갯수만큼 돌려서 리눅스로 설계된 디바이스에 리눅스 커맨드를 쏴 줄 수 있었다.
이제서야 동기랑 짝짝꿍이 좀 맞는 듯 하다.
같이 구글링 삽질 -> 동작 설계(나) -> batch코드 및 linux커맨드 작성(동기) -> 생길만한 오류 캐치(나)
아무튼 실제 업데이트 자동화의 간략한 작동 순서는 이러했다.
- batch에서 SCP로 업데이트 패키지를 리눅스로 전송
- batch에 리눅스 커맨드를 넣어서 보낸 업데이트 패키지 내부 쉘 스크립트 run
- 삭제할 디렉토리 혹은 수정할 디렉토리 등 업데이트 내용이 정리 된 커맨드가 있는 쉘 스크립트가 실행되면 업데이트 끝 !
이렇게 놓고만 본다면 쉬워보일수 있겠지만 저 중간 중간에 났던 에러들만 생각해도 정신이 아득해진다.
주요 이슈 또한 정리해본다.
회사 컴퓨터가 windows환경이고 디바이스는 linux ubuntu인 크로스플랫폼 환경에서 작업했기에 일어난 이슈들이 많았다.
- batch -> 쉘 스크립트에서의 syntax 이슈 (batch 문법은 조금 희한하다 )
- 보통 가독성을 위해 코드 간 Enter를 눌러서 보기 쉽게하는데 batch 및 쉘 스크립트에서는 커맨드 간 공백이 있으면 안된다.
- linux에서 syntax 이슈를 확인했다. 디깅해보니 코드를 윈도우에서 작성하고 리눅스에서 돌린 것이 문제였다.
윈도우와 리눅스의 캐리지 리턴, 라인 피드의 차이로 이슈가 발생한 것임을 확인했다.
어쨌든 거의 다 했다. 내 자신이 대견하다. 회사에서도 이번 일로 조금 인정받은 것 같고..
고생했다 제갈한범.
욕봤다 진짜 'ME_BUILDING' 카테고리의 다른 글
어쩌다 C# (0) 2021.05.26 Node.JS in TypeScript (0) 2021.04.12 개발새발 (0) 2021.01.28 DB 인덱스의 원리와 B-Tree에 관한 고찰 (0) 2021.01.08 전자정부프레임워크 MS SQL 연동 (0) 2021.01.05