"Pywikipedia 봇 자동화 (구식)"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
 
(사용자 2명의 중간 판 19개는 보이지 않습니다)
4번째 줄: 4번째 줄:


==개요==
==개요==
{{참고|pywikipediabot 로그인 버그}}
*이 글은 이제 필요없게 되었다. ㅠㅠ
:본래 pywikipediabot은 자동로그인 기능이 있어서 expect가 필요없다.
:필자가 이것을 썼던 이유는 '''[[pywikipediabot 로그인 버그]]''' 때문이었다.
*[[expect]]를 활용하여 pywikipedia 로그인
*[[expect]]를 활용하여 pywikipedia 로그인
*[[crontab]]에 등록하여 주기적으로 실행
*[[crontab]]에 등록하여 주기적으로 실행
9번째 줄: 13번째 줄:


==수동 실행==
==수동 실행==
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# python /root/pywikipedia/redirect.py double -always
[root@zetawiki ~]# python /root/pywikipedia/redirect.py double -always
Retrieving special page...
Retrieving special page...
Retrieved 9 redirects from special page.
Retrieved 9 redirects from special page.
21번째 줄: 25번째 줄:


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


27번째 줄: 31번째 줄:
{{참고|expect}}
{{참고|expect}}
패스워드가 자동으로 입력되게 하기 위해 expect가 필요하다.
패스워드가 자동으로 입력되게 하기 위해 expect가 필요하다.
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# rpm -qa | grep expect
[root@zetawiki ~]# rpm -qa | grep expect
expect-5.43.0-8.el5
expect-5.43.0-8.el5
</source>
</syntaxhighlight>


==자동화 스크립트 생성==
==자동화 스크립트 생성==
<source lang='bash'>
<syntaxhighlight lang='bash'>
mkdir /root/script
mkdir /root/script
cd /root/script
cd /root/script
43번째 줄: 47번째 줄:
echo "expect eof" >> redirect_expect.sh
echo "expect eof" >> redirect_expect.sh
chmod 755 redirect_expect.sh
chmod 755 redirect_expect.sh
</source>
</syntaxhighlight>
:→ /root/script 폴더를 만들고 거기에 스크립트를 생성하도록 하였다.
:→ /root/script 폴더를 만들고 거기에 스크립트를 생성하도록 하였다.
:→ 위 명령어 중 자신의 패스워드를 넣으면 된다.
:→ 위 명령어 중 자신의 패스워드를 넣으면 된다.
49번째 줄: 53번째 줄:


==스크립트 실행 테스트==
==스크립트 실행 테스트==
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# /root/script/redirect_expect.sh
[root@zetawiki ~]# /root/script/redirect_expect.sh
spawn python /root/pywikipedia/redirect.py double -always
spawn python /root/pywikipedia/redirect.py double -always
Retrieving special page...
Retrieving special page...
74번째 줄: 78번째 줄:


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


==예약 등록==
==예약 등록==
;명령어
{{소스헤더|명령어}}
<source lang='bash'>
<syntaxhighlight lang='bash'>
cat <(crontab -l) <(echo "35 * * * * /root/script/redirect_expect.sh") | crontab -
cat <(crontab -l) <(echo "35 * * * * /root/script/redirect_expect.sh 2>&1 >> /var/log/redirect_expect.log") | crontab -
crontab -l
crontab -l
</source>
</syntaxhighlight>
:→ 매시 35분에 수행되도록 예약하였다.
:→ 매시 35분에 수행되도록 예약한다.
:→ 수행내역을 /var/log/redirect_expect.log에 기록한다.<ref>중간에 2>&1 를 넣었기 때문에 표준출력뿐 아니라 오류메시지도 기록된다.</ref>


;실행예시
{{소스헤더|실행예시}}
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# cat <(crontab -l) <(echo "35 * * * * /root/script/redirect_expect.sh") | crontab -
[root@zetawiki ~]# cat <(crontab -l) <(echo "35 * * * * /root/script/redirect_expect.sh 2>&1 >> /var/log/redirect_expect.log") | crontab -
[root@jmnote ~]# crontab -l
[root@zetawiki ~]# crontab -l
35 * * * * /root/redirect_expect.sh
35 * * * * /root/script/redirect_expect.sh 2>&1 >> /var/log/redirect_expect.log
</source>
</syntaxhighlight>


==작동 확인==
==작동 확인==
98번째 줄: 103번째 줄:


==같이 보기==
==같이 보기==
*[[미디어위키 이중 넘겨주기 봇 돌리기]]
*[[Pywikipedia 이중 넘겨주기 봇 돌리기]]
*[[expect]]
*[[expect]]
*[[crontab]]
*[[crontab]]
*[[SCP 자동화]]
*[[SCP 자동화]]


[[분류: 미디어위키]]
==주석==
<references/>
 
[[분류:Pywikipedia]]
[[분류:Expect]]

2020년 11월 2일 (월) 02:59 기준 최신판

mediawiki bot automation, pywikipedia bot automation
미디어위키 봇 자동화, 미디어위키 봇 예약작업
pywikipedia 자동화, pywikipedia 배치 수행

1 개요[ | ]

  • 이 글은 이제 필요없게 되었다. ㅠㅠ
본래 pywikipediabot은 자동로그인 기능이 있어서 expect가 필요없다.
필자가 이것을 썼던 이유는 pywikipediabot 로그인 버그 때문이었다.

2 수동 실행[ | ]

[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 설치 확인[ | ]

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

[root@zetawiki ~]# rpm -qa | grep expect
expect-5.43.0-8.el5

4 자동화 스크립트 생성[ | ]

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 스크립트 실행 테스트[ | ]

[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 예약 등록[ | ]

명령어
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]
실행예시
[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 주석[ | ]

  1. 중간에 2>&1 를 넣었기 때문에 표준출력뿐 아니라 오류메시지도 기록된다.
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}