Shell에서 SMB로 공유된 파일 존재유무 확인

원격지에서 samba로 공유되고 있는 파일이 존재하는지를 확인하기 위해서 smbclient를 이용해봤다.

아래와 같은 command를 shell에서 호출하고 나서

smbclient //${server}/${service} ${password} -c “ls ${dir}/${file}”

exit code를 $?로 판단하면 파일이 존재유무를 손쉽게 확인할 수 있다.

고생을 했던게 ${service}.

단순히 알고 있는게 samba 경로였기 때문에 전체 경로를 다 넣어보니 연결이 안되었었다.

samba로 공유된 파일들에 대해서 나처럼 경로에 대한 정보만 알고 있다면 첫번째 디렉토리만 service 항목에 넣으면 된다.

패스워드 유출 문제가 불안하면 authentication file을 만들어서 입력하는 방법도 옵션으로 제공하고 있다.

-c는 접속 후 전송할 command를 추가할 때 사용하는 옵션.

나머지는 smbclient의 man page를 참조하면 되겠다.

man page에도 나오지만 authentication file은 아래의 형태로 생성해서 -A 옵션으로 파일명을 명시해야 한다.

username = <value>

password = <value>

domain = <value>

 

난 왜 이 것을 시도했는가?

자동화 시스템에서 파일을 scp로 전송 후 파일이 제대로 전송되었다면 특정 사이트에 경로를 기록해야 하는 상황이었다.

scp를 사용했으면 ssh로 command 전송해서 하면 되지 않나? 라는 생각이 들지만

문제는 파일이 쌓이는 서버쪽 정보는 내가 전혀 알지도 못하고 알게 두지도 않았다.

scp로 전송시 필요한 ssh password도 내가 아닌 알고 있는 제3자가 입력해서 암호화되어 저장된 그런 상태…

원격지에 파일이 전송되는 경로가 사실은 Samba 뿐 아니라 FTP로 운영되는 경로이기도 했는데, 역시나 FTP 정보를 알 수도 없었다.

어디까지나 일반 사용자 입장에서 서버 요구사항을 해결해야 했던 경험.