프로그램이라고는 일면식도 없는 평범한 직장인임을 감안하여 봐주세요.
매일 출첵하면 포인트를 주는 사이트가 있습니다. (돈은 아니고 그냥 제가 이용하는 사이트입니다.)
보통은 출근길 지하철에서 하곤 했는데, 코로나 터지고 자차이용을 하면서 깜박하고 잊고 지내다 얼마전 들어가보니 거의 일년을 출석을 못했더군요.
그리고 마침 지마켓 빅스마일데이로 구매한 ds220+를 이용해 자동출석체크를 해보자 다짐하게 됩니다.
(1단계) 목표설정
이게 상상만 한거고 가능한지 조차 모르는 문외한이라 클리앙 나스당에 질문을 해봅니다.
가능하고 파이썬? 셀레니움? 뭐 그런걸 이용한답니다.
내일부터 본격적으로 검색해보자 다짐을 합니다.
(2단계) 시작
구글링 해보니 실제로 파이썬과 셀레니움을 이용한 자동로그인 예제가 많이 있습니다.
따라해보니 진짜 됩니다.
제가 이용할 사이트에 적용을 해봅니다.
오... 드디어 test.py 파일을 만들었고 이제 exe로 만들어 스케줄러를 돌리면 됩니다.
pyinstaller가 에러가 납니다.
클리앙 도움으로 해결합니다.
윈도에서 작동하는거까지 확인하고 윈도 스케줄러를 돌려놓고 퇴근합니다.
(3단계) 환희
대박사건.. 출근해서 보니 출석이 돼있습니다.
이제 이걸 나스로 옮기기만 하면 됩니다. 다 만든 것 같습니다.
근데 나스에는 윈도우가 없네요?
괜찮습니다. 가상머신으로 윈도우를 돌리면 됩니다.
8테라 하드 하나 꼽혀있는데 가상머신 돌리려면 ext4를 btrfs로 바꿔야 하고 그럼 포맷을 해야한다네요?
일단 가상머신은 최후의 보루로 남겨두고 다른방법을 찾아봅니다.
찾아보니 도커? 우분투? 뭐 그런 방법이 있다네요.
괜찮습니다. 뭐든 할 수 있을 것 같은 기분이 듭니다.
(4단계) 시련
나스에서 도커 설치하고 우분투까지 깔았습니다.
근데 다음에 뭘 해야할지 모르겠습니다.
또 구글링..
putty라는걸 이용해 도커에 접속이 가능하네요.
apt, pip 등 먼지 모를 명령어를 구글에 나온대로 따라합니다.
파이썬, 셀레니움, 크롬을 차례대로 설치합니다.
이제 정말 끝이 보입니다.
근데 만들어둔 test.py파일과 크롬드라이버 파일을 어떻게 우분투로 가져와야할지 모릅니다.
너무 클리앙에만 질문을 한거같아, 시놀로지카페와 파이썬 개발자카페에 남깁니다.
전문적인 답변이 달리는데 문제는 제가 무슨말인지 이해를 못합니다.
다시 구글링..
putty에서 로컬폴더와 우분투 내 폴더를 마운팅시키면서 docker를 실행합니다.
엇, 도커 내에 또다른 우분투가 생기네요.
새로 생긴 우분투 속성창을 보니 여기서 쉽게 폴더마운트를 할수 있었습니다.
이렇게 또 하나 배워갑니다.
결국 새로 만든 도커는 지우고, 원래의 도커를 편집하여 폴더를 마운트 합니다.
그리고 제가 만든 test.py를 우분투로 옮기는데 성공합니다.
이제 진짜 다온듯 합니다.
(5단계) 좌절
부푼 꿈을 안고 pythone3 test.py를 실행했으나, 에러..
무슨 에러인지 구글링..
헤드리스 옵션을 부여합니다.(실제 창 없이 백그라운드에서 돌아가게 해주는거라네요)
다시 실행.. 에러.. 구글링..
no-sandbox, disable-dev-shm-usage, disable-gpu 등 옵션을 부여합니다. (무슨 옵션인지 모릅니다. 그냥 따라합니다.)
다시 실행.. 에러.. 구글링..
disable-infobars, disable-extensions 옵션을 부여합니다.(이름으로 보아 정보창이랑 확장프로그램을 못쓰게 만드는거 같네요. 근데 왜 하는진 모릅니다. 그냥 따라합니다. )
다시 실행.. 에러.. 구글링..
virtualdisplay를 설치해 적용해봅니다.
다시 실행.. 에러.. 구글링..
아무리 해도 안됩니다. 같은 py 파일이 윈도에선 제대로 돌아갑니다.
제정신이 아닙니다.
누구한테 무슨 질문을 해야할지도 모르겠습니다.
(6단계) 멘붕
우분투에 설치한 크롬이 97.0.4692.99인데 크롬드라이버는 97.0.4692.71입니다.
버전의 맨 뒷자리가 다릅니다.
혹시 이게 문제인가 싶어 크롬드라이버 오류일걸로 방향을 선회합니다.(사실 이문제인지 아닌진 모르지만 이거 아니면 안될 이유가 없다고 생각했습니다.)
각종 포럼 및 카페에 질문을 남깁니다.
여러 답변이 달리지만 결국 해결은 안됩니다.
크롬 버전 매니저? 라는걸 받아봅니다.(크롬드라이버를 크롬버전에 맞게 그때그때 받아주는거라 버전을 신경안써도 된다고 하네요)
다시 실행.. 역시나 에러.. 구글링..
(7단계) 리셋
지금까지 오면서 시행착오를 많이 거쳤고 py파일과 우분투가 너무 난잡하고 불필요한게 많이 깔린듯하여 싹 지웁니다.
더불어 제 정신도 초기화합니다.
그리고 py를 첨부터 클린하게 다시 만들었고, 우분투도 새로 깔고 필요한것만 설치합니다.
putty 아니어도 dsm의 컨테이너 내에 터미널이 있는걸 발견합니다.
마운트 폴더도 그렇고..
마치 벽을 타고 올라가서 옆에 사다리를 발견한 느낌입니다.
py를 다시 만들었습니다. 백지에서 하나씩 하나씩.. 윈도에서 돌아가는 최소로만 만들었습니다.
그리고 우분투에서 돌리며 하나씩 옵션을 추가해갑니다.
먼저번에 이것저것 다 추가한 옵션들도 초기화상태에서 하나씩 추가하고 에러가 똑같은 옵션 등은 삭제했습니다.
headless, no-sandbox, windows size 이렇게 3개의 옵션이 부여됐을때 정상작동하는 것을 확인했습니다.
결국 크롬드라이버문제는 아니었네요.
(8단계) 다듬기
2개의 사이트에 3개의 계정, 즉 6개의 파일을 만들었었는데, 이걸 1개의 파일로 합칠까 하다가,
1사이트에 다계정, 2사이트에 다계정 이런식으로 2개의 파일로 각각 묶기로 합니다.
구글링..
배열과 반복문을 사용하여 성공합니다.
crontab에 매일 새벽5시에 등록 후, 서비스를 실행합니다.
현재 시점이 딱 8단계가 끝난 시점이네요.
프로그램이라기도 민망한 수준이지만 제입장에서 멀고도 긴 여정이었습니다. ㅋㅋ
근데 문제해결 과정에서 나름의 재미도 있고 결과를 보니 성취감도 있고 그르네요.
그리고 인터넷의 발달로 뭐든 배우기 참 좋은 세상이란 생각이 듭니다.
py 에 모듈 하나 설치하고 라인한줄로 가능합니다. ㅎ
출첵클릭 직후 스샷 찍어서 텔레그램으로 스샷 이미지 전송하기로요 ㅋㅋ
감사합니다~
5단계에서 에러는 아마 4단계때 우분투에 libx11-xcb1, libdbus-glib-1-2 혹은 xvfb를 설치하셨으면 가능하지 않았을까 싶네요
신기하게 글이 술술 읽히네요 ㅎㅎㅎ
자..이제.. 마우스/키보드 매크로 레코딩 유틸을 이용하여 자동출첵을 해봅니다.
하지만 이정도 근성이면 진짜 개발자에 도전하셔도 나쁘지 않으실거 같다는 생각이 듭니다.
미지의 세계?를 알아가면서 하나하나 해결하고, 성공했을때 정말 짜릿하죠.
그 근성에 박수를 보냅니다.
나스 자동 출석