즐겁게!! 자신있게!! 살아보세!!

재밌는 인생을 위하여! 영촤!

Dev Log/Preferences

[Dev log] NAS Docker ubuntu use ChromeDriver

Godwony 2021. 1. 12. 23:02
728x90
반응형

I want 

 

"자료 저장용으로 24시간 켜져 있는 NAS를 활용하여 네이버 카페 로그인카페 댓글 작성을 자동화로 구현한다."

 

 

need method

 

1. Python - selenium - ChromeDriver

 

먼저 NAS는 ChromeDriver를 사용하지 못합니다.

 

경량 linux 라고 불리는 OS를 사용하는데 Chrome에서 지원도 안되고 설치도 안됩니다.

 

최종적으로 자동화를 실행할 때 Chrome을 먼저 설치해야 head less로 할 수 있는데 NAS 자체에서는 사용 못하는 걸로 판단했습니다.

 

" 알아보고 테스트해보고 몇일 꼬박 걸렸습니다."

 

 

2. 차선책으로 NAS Docker Ubuntu를 설치해서 구현해보자 

 

VMwere, xenserver 등의 기타 가상 머신들은 세팅해보고 사용해봤는데 Docker를 사용해본 적이 없었습니다.

 

게다가 Docker Ubuntu 에서 Chrome이 설치되고 ChromeDriver가 정상적으로 동작할지도 모르는 상태였고, 가상 머신들 안에서 동작하는 거와 이론적으로는 같다고 판단하고 시작하였습니다.

 

자료를 찾다보니 NAS에 가상 머신으로 win 10을 세팅한 자료도 있고 해서 더욱 가능하겠다고 생각되었습니다.

 

 

3. Docker Ubuntu 20.04 Container 

 

 

NAS Docker 는 GUI로 간단하게 실행할 수 있습니다.

 

설치된 Docker Ubuntu에 접근하기 위해 SSH로 접근하였습니다. 

 

NAS에서 먼저 root 계정으로 전환한 다음에 Docker에 접근합니다. 

 

$ sudo -i #root 계정으로 전환

$ docker ps #docker 현재 상황

$ docker exec -it ubuntu2 /bin/bash #ubuntu2 이름을 가진 컨테이너에 접속

docker에 접속할 때 ubuntu2(NAMES) 대신에 786f8bf91866(Container ID)를 넣어도 됩니다.

 

 

제일 먼저 해야할것은 apt에 대한 업데이트입니다. 

$ apt-get update

$ apt-get upgrade

 

python도 설치해야되고, Chrome, Utility 들도 설치해야 되고 각종 PATH들도 추가해야 됩니다. 

 

간단한 linux 명령어는 알고 계시는게 좋습니다.

 

Docker Container를 생성할때 설정이 잘못되어 Docker 외부 인터넷에 연결이 안 되어 apt 서버에 접속을 못해서 프로그램들을 설치를 못하는 상황이 발생했습니다. 

 

간단한 옵션이지만 NAS와 Docker를 하나의 네트워크로 설정하는듯 합니다. 아래 Link 참고하셔서 해결해보시면 될 거 같네요 

 

hiwony.tistory.com/57

 

[NAS] Synology NAS Docker Ubuntu 에서 apt-get update 가 안될때

어떤 자동화를 하기 위하여 ChromDriver를 사용해야 하는데 NAS에서는 Chrom을 설치하지 못하여 Docker로 Ubuntu를 컨테이너에 올리고 Chrom을 설치하고 chromdirver를 사용하기로 결정하였습니다. Ubuntu까지 D

hiwony.tistory.com

 

 

 

4. shell script

 

cron에서 바로 python 파일을 동작시켜도 되지만 오류가 발생하여 shell script로 감싸서 동작 시키는게 좋다고 합니다.

 

hiwony.tistory.com/67

 

[Dev log] log 작성하는 Shell Script

python 파일을 실행시켜주고, python에서 나오는 결과를 기록하자 쉘 스크립트란 쉘에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치(batch) 파일이다. 리눅스에서는 여러 명령어들을 파이프

hiwony.tistory.com

 

 

 

 

 

5. ubuntu crontab을 이용해서 정해진 시간에 실행하자 

 

 

cron이 정상적인 동작을 안하여 아래 Link에서 도움을 많이 받았습니다. 

 

ckbcorp.tistory.com/780

 

crontab 이 정상 실행 안 될 때.

linux 에서 정기적인 작업 실행을 위한 corn. cron 의 사용법은 인터넷 검색 해서 알아보고.... 나는 크론 안 되는 경우를 좀 적겠다. daemon 을 하나 만들어서 정기적으로 실행시키려고 cron 에 등록했는

ckbcorp.tistory.com

hiwony.tistory.com/62

 

[Dev log] Linux crontab 사용법, 리눅스 예약작업 반복작업

1. crontab 이란 등록한 시간에 자동으로 명령을 실행해주는 unix계 데몬입니다. 2. crontab 옵션 명령어 옵션 crontab -u user 사용자 지정(root 사용자가 특정 사용자의 crontab 파일을 다룰 때 사용) crontab -..

hiwony.tistory.com

 

저는 30분당 한번씩 동작하면 되기에 crontab -e 로 열고 " 0,30 * * * * /0.python/naver/job.sh " 추가해주었습니다.

 

0,30 은 매시간 0분과 30분에 동작한다 입니다. 

$ crontab -e 

만약에 에디터로 crontab을 열게 된다면  누가(root) 실행을 할 것인가 하는 것을 명시적으로 추가해놔야 한다고 합니다.

에디터로 파일 설정을 하게되면..

$ vi /etc/crontab 


# 맨 아래에 작성
0,30 * * * * root /0.python/naver/job.sh 

 

 

내용 추가 하고 restart를 꼭 해줘야 됩니다. 

$ service cron restart

python에서 log를 출력할 수 있게 코딩을 해주어서 정상 동작하는 걸 확인하였습니다.  

 

 

 

 

Finally

 

python selenium ChromeDriver를 사용하기 위해서 멀리 돌아온거 같습니다. 

 

여러 조건들을 충족 해야 하는 터라 우회하고 우회한 듯합니다. 

 

method : docker, ubuntu, python, selenium, chromedriver, crontab, shell script, PATH 

 

 

 

728x90
반응형