왜 만들게 됐나
업체 서버에 내부 파일을 전송하는 작업을 운영하고 있는데, 문제가 하나 있었다.
해당 서버가 해외 서버다 보니 간헐적으로 연결이 끊기는 상황이 발생했다. 프랑스 서버라 너무나 멀었다...
더 골치 아팠던 건 전송 방식이 SFTP로 구축되어 있었다는 점이다. 내가 개발한 것도 아니고, 서버 담당자도 아니었기 때문에 구축 방식 자체를 바꾸거나 서버를 직접 건드려서 해결하는 건 불가능한 상황이었다.
그래서 기존 구축 방식은 그대로 두되, 해외 서버 연결 시 sleep을 두어 연결을 기다리거나 재전송하는 로직을 추가했다. 하지만 그래도 연결 자체가 끊기는 경우가 계속 발생했다. 심지어 파일 전송이 끊긴 걸 확인하려면 작업 이후 log 파일을 직접 열어서 눈으로 확인하는 수밖에 없었다.
이 때문에 업무가 자꾸 꼬이기 시작했다. 연결이 끊긴 걸 뒤늦게 발견하고, 그때부터 처리가 밀리는 패턴이 반복됐다.
그래서 생각한 게 알림 자동화였다. 매일 아침 Slack으로 정상적으로 파일 전송이 되었는지 상태값을 받아보고, 문제가 있으면 바로 수동으로 처리해주면 업무가 꼬일 일이 없겠다 싶었다
만든 방법
1. Slack 워크스페이스 생성
업무용으로 별도 Slack 워크스페이스를 새로 만들었다.
2. Slack Webhook 생성
Slack API에서 Incoming Webhook을 생성해서 연동 준비를 했다. Webhook URL을 발급받으면, 해당 URL로 POST 요청을 보내는 것만으로 Slack 메시지를 전송할 수 있다.
3. Shell 스크립트 작성
서버에서 log를 확인하고 Slack으로 알림을 보내는 shell 스크립트 파일을 작성했다.
4. Cron에 배치 등록
작성한 스크립트를 매일 자정 5분에 실행되도록 cron에 등록했다.
#---------------------------------- log check - slack -------------------------------------#
05 00 * * * /home/user/cronjob/파일명
실행하니 오류 발생
배치를 등록하고 실행해봤더니 권한 문제 또는 파일을 찾을 수 없다는 오류가 발생했다.
원인은 shell 스크립트 파일 자체의 문제였고, 세 가지를 순서대로 해결했다.
1. 소유자 / 그룹 변경
chown 소유자명:그룹명 파일명
2. 실행 권한 부여
chmod 755 파일명
3. CRLF 문제 해결
Windows 환경에서 파일을 작성하면 줄바꿈 문자가 \r\n(CRLF)으로 저장된다.
Linux에서는 이걸 인식 못해서 오류가 나는 경우가 있다. 아래 명령어로 제거해줬다.
sed -i 's/\r//g' 파일명
해결 후
세 가지를 수정하고 배치를 재실행하니 정상적으로 Slack 알림이 오는 것을 확인했다.
이제는 매일 아침 Slack을 열면 전날 밤 연동 상태를 바로 확인할 수 있다. 문제가 있으면 출근하자마자 바로 처리할 수 있게 됐고, 예전처럼 뒤늦게 발견해서 업무가 꼬이는 상황이 사라졌다.
로그 파일을 일일이 열어보던 시절과 비교하면 훨씬 편해졌다.

'Dev Journey > 실습 & 프로젝트' 카테고리의 다른 글
| [바이브코딩] "답답해서 직접 만든 AI 비교 도구" – 파이썬 몰라도 2일 만에 완성한 후기 (0) | 2026.05.27 |
|---|---|
| [바이브코딩] 가볍고 따뜻한 힐링 앱, 괜찮아 버튼 in 앱인토스 (0) | 2026.05.26 |
| [바이브코딩] 공부가 너무 하기 싫어서 앱을 만들어버렸다 🃏 (0) | 2026.04.07 |
| [파이널 프로젝트] Deli — 🍔 배달 앱 웹서비스 (0) | 2026.04.06 |
| [세미 프로젝트] Fitneeds — 🏋️ 헬스장 검색 & 리뷰 웹사이트 (2) | 2026.04.06 |