Pywikipedia 봇 자동화 (구식)

Jmnote (토론 | 기여)님의 2012년 8월 27일 (월) 19:48 판
미디어위키 봇 자동화
미디어위키 봇 예약작업
pywikipedia 자동화
pywikipedia 배치 수행

1 개요

2 수동 실행

[root@jmnote ~]# python /root/pywikipedia/redirect.py double -always
Retrieving special page...
Retrieved 9 redirects from special page.

>>> JQuery 날짜 범위 선택 <<<
   Links to: [[JQuery UI 기간 선택]].
   Links to: [[JQuery UI 기간 선택 (datepicker)]].
- #넘겨주기 [[JQuery UI 기간 선택]]
+ #넘겨주기 [[JQuery UI 기간 선택 (datepicker)]]

Password for user Jmnote_bot on Jmnote:ko:
→ 패스워드를 요구하므로 자동으로 처리될 수 없다.

3 expect 설치 확인

패스워드가 자동으로 입력되게 하기 위해 expect가 필요하다.

[root@jmnote ~]# rpm -qa | grep expect
expect-5.43.0-17.fc11.x86_64

4 자동화 스크립트 생성

echo '#!/usr/bin/expect' > redirect_expect.sh
echo 'set timeout 600' >> redirect_expect.sh
echo 'spawn python /root/pywikipedia/redirect.py double -always' >> redirect_expect.sh
echo "expect \"Password for user\"" >> redirect_expect.sh
echo "send \"P@ssw0rd\\r\"" >> redirect_expect.sh
echo "expect eof" >> redirect_expect.sh
chmod 755 redirect_expect.sh
→ 위 명령어 중 P@ssw0rd 대신 자신의 패스워드를 넣으면 된다.
→ 명령어 수행 중 대기시간이 길기 때문에 timeout 값을 충분히 주어야 한다. 여기서는 600초.

5 스크립트 실행예시

[root@jmnote ~]# /root/redirect_expect.sh
spawn python /root/pywikipedia/redirect.py double -always
Retrieving special page...
Retrieved 2 redirects from special page.

>>> Crontab 작업 목록 전체 보기 <<<
Sleeping for 4.3 seconds, 2012-08-14 17:58:59
   Links to: [[모든 사용자 crontab 작업 보기]].
Sleeping for 4.6 seconds, 2012-08-14 17:59:04
Sleeping for 4.8 seconds, 2012-08-14 17:59:09
   Links to: [[모든 계정 crontab 작업 보기]].
Sleeping for 4.8 seconds, 2012-08-14 17:59:14
Sleeping for 4.8 seconds, 2012-08-14 17:59:19
- #넘겨주기 [[모든 사용자 crontab 작업 보기]]
+ #넘겨주기 [[모든 계정 crontab 작업 보기]]

Password for user Jmnote_bot on Jmnote:ko: P@ssw0rd

Logging in to Jmnote:ko as Jmnote_bot via API.
Should be logged in now
Sleeping for 24.3 seconds, 2012-08-14 17:59:24
Updating page [[Crontab 작업 목록 전체 보기]] via API

... (생략)
→ 스크립트가 패스워드 입력 등 모든 과정이 자동으로 진행된다.

6 예약 등록

명령어
cat <(crontab -l) <(echo "35 * * * * /root/redirect_expect.sh") | crontab -
crontab -l
→ 매시 35분에 수행되도록 예약하였다.
실행예시
[root@jmnote ~]# cat <(crontab -l) <(echo "35 * * * * /root/redirect_expect.sh") | crontab -
[root@jmnote ~]# crontab -l
35 * * * * /root/redirect_expect.sh

7 작동 확인

봇의 작동상태는 다음과 같은 곳에서 확인할 수 있다.

8 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}