- mediawiki bot automation, pywikipedia bot automation
- 미디어위키 봇 자동화, 미디어위키 봇 예약작업
- pywikipedia 자동화, pywikipedia 배치 수행
1 개요[ | ]
![](https://z-images.s3.amazonaws.com/thumb/e/ec/Crystal_Clear_app_xmag.svg/24px-Crystal_Clear_app_xmag.svg.png 1.5x, https://z-images.s3.amazonaws.com/thumb/e/ec/Crystal_Clear_app_xmag.svg/32px-Crystal_Clear_app_xmag.svg.png 2x)
- 이 글은 이제 필요없게 되었다. ㅠㅠ
- 본래 pywikipediabot은 자동로그인 기능이 있어서 expect가 필요없다.
- 필자가 이것을 썼던 이유는 pywikipediabot 로그인 버그 때문이었다.
- expect를 활용하여 pywikipedia 로그인
- crontab에 등록하여 주기적으로 실행
- 미디어위키 이중 넘겨주기 봇 돌리기를 끝내고 오시라.
2 수동 실행[ | ]
Console
Copy
[root@zetawiki ~]# 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 설치 확인[ | ]
![](https://z-images.s3.amazonaws.com/thumb/e/ec/Crystal_Clear_app_xmag.svg/24px-Crystal_Clear_app_xmag.svg.png 1.5x, https://z-images.s3.amazonaws.com/thumb/e/ec/Crystal_Clear_app_xmag.svg/32px-Crystal_Clear_app_xmag.svg.png 2x)
패스워드가 자동으로 입력되게 하기 위해 expect가 필요하다.
Console
Copy
[root@zetawiki ~]# rpm -qa | grep expect
expect-5.43.0-8.el5
4 자동화 스크립트 생성[ | ]
Bash
Copy
mkdir /root/script
cd /root/script
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 \"패스워드\\r\"" >> redirect_expect.sh
echo "expect eof" >> redirect_expect.sh
chmod 755 redirect_expect.sh
- → /root/script 폴더를 만들고 거기에 스크립트를 생성하도록 하였다.
- → 위 명령어 중 자신의 패스워드를 넣으면 된다.
- → 명령어 수행 중 대기시간이 길기 때문에 timeout 값을 충분히 주어야 한다. 여기서는 600초.
5 스크립트 실행 테스트[ | ]
Console
Copy
[root@zetawiki ~]# /root/script/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 예약 등록[ | ]
명령어
Bash
Copy
cat <(crontab -l) <(echo "35 * * * * /root/script/redirect_expect.sh 2>&1 >> /var/log/redirect_expect.log") | crontab -
crontab -l
- → 매시 35분에 수행되도록 예약한다.
- → 수행내역을 /var/log/redirect_expect.log에 기록한다.[1]
실행예시
Console
Copy
[root@zetawiki ~]# cat <(crontab -l) <(echo "35 * * * * /root/script/redirect_expect.sh 2>&1 >> /var/log/redirect_expect.log") | crontab -
[root@zetawiki ~]# crontab -l
35 * * * * /root/script/redirect_expect.sh 2>&1 >> /var/log/redirect_expect.log
7 작동 확인[ | ]
봇의 작동상태는 다음과 같은 곳에서 확인할 수 있다.
8 같이 보기[ | ]
9 주석[ | ]
- ↑ 중간에 2>&1 를 넣었기 때문에 표준출력뿐 아니라 오류메시지도 기록된다.
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.