ããã«ã¡ã¯ãã«ããããã¹ïŒ
ç§ã¯ç§ã®æå¡ã®ããã«ã©ã®ããã«SMSã¢ã©ãŒããè¡ã£ãããã話ãããããšæããŸãã
ç§ã¯
FSF ITMOã§ã®1幎ç®ã«ããŸãã åŠéšã§ã¯ãã¹ã±ãžã¥ãŒã«ã®å€æŽã«ã€ããŠåŠçã«éç¥ãããããã掟é£ãµãŒãã¹ããããŸããããã¯ãã€ã³ã¿ãŒãããäžã§é£çµ¡å
ããŒãžãšãã€ãã¿ãŒã§è¡ãããŸãã
ã¹ã±ãžã¥ãŒã«ã®å€æŽã远跡ã§ããªãã£ãããã«ãååã®ã°ã«ãŒããã¯ã©ã¹ã«è¡šç€ºãããªãã£ããšããäºå®ããããå°ããªã¹ãã£ã³ãã«ããããŸããã ãã®æ¥ãç§ã¯åãVkããŒãžããSMSã¢ã©ãŒããäœæãããšããã¢ã€ãã¢ãæãã€ããŸããã
ã¯ããç§ã¯ãã®ããã®ç¹å¥ãªãµãŒãã¹ãããããšãç¥ã£ãŠããŸãããããã¯ããŸãã«ãç°¡åã§ã...

åæ
çãªäœè«
ç§ã¯LinuxãPhythonãããã³SqlãåããŠã§ããããã®èšäºã¯ãLearn to Learnãã®ååã«åºã¥ããŠæžãããŠããŸãã
ã§ããããäœãåé¡ããã£ããšããŠãããŸãæã£ããããã«ãã³ã¡ã³ãã«ã³ã¡ã³ããæžããŠãã ããã
ã©ãããå§ããŸããïŒ
å°ãèããŠãç§ã¯å¿
èŠãªãã®ãå®çŸããŸããïŒ
- VkããŒãžã§æ°ããæçš¿ãã¹ãã£ã³ããŸã
- ãããã®åãæçš¿ã§ãã°ã«ãŒããžã®åç
§ãæ€çŽ¢ããŸãïŒäŸïŒ143ïŒ
- ã°ã«ãŒãã®çªå·ãæçš¿ã«èŠã€ãã£ãå Žåããã®æçš¿ããã®ã°ã«ãŒãã®æºåž¯é»è©±ã«éä¿¡ããŸã
Debianã«ã¯ããŒã ããµãŒããŒããããããããèªãããã«GrindelServerãšåŒãã§ããŸããããã«åºã¥ããŠãããããã¹ãŠå®è£
ããã€ããã§ããã
ã³ãã³ãã©ã€ã³ããSMSãéä¿¡ããæ¹æ³ãåã«åŠã¶ããšããå§ããããšã«ããŸããã ãã®ãããHuawei E1150ã®3Gã¢ãã ã3å°ã»ã©ããããã®ãã¡ã®1å°ã䜿çšããããšã«ãªããŸããã Googleã¯ãã®ãããã¯ã«é¢ããè³æãç°¡åã«èŠã€ããŸããã èŠããã«ã
ã¢ãã ããã¢ãã ã®ã¿ãã¢ãŒãã«åãæ¿ã㊠ïŒãã®ããããŸã åœã®CDãã©ã€ããšã«ãŒããªãŒããŒãæã£ãŠããïŒãGnokiiãŸãã¯Gammuããã°ã©ã ãèšå®ããŠåäœãããå¿
èŠããããŸããã
ã¬ã³ã ãŒãéžã³ãŸãã...
ã¬ã
Gammuã§ç°¡åã ã£ããšã¯èšããŸããããçµå±ã¯ãã¹ãŠããŸããããŸããã
Debianã®ã€ã³ã¹ããŒã«ã¯æšæºã§ãïŒ
$ sudo apt-get install gammu
ããŒãžã§ã³1.28.0ãã€ã³ã¹ããŒã«ãããŠããŸã
Gammu configïŒ/ etc / gammurc
ã¢ãã ã¯éåžžã/ dev / ttyUSB0ãttyUSB1ãttyUSB2ãšããŠå®çŸ©ãããŸãã ttyUSB0ãå¿
èŠã§ã
æ§æã«è¿œå ããã ãã§ã
[gammu] port= /dev/ttyUSB0 connection = at
Connectinonã¯æ¥ç¶ã®äžçš®ã§ã
ããã ãã§ãïŒ ãã®åŸã確èªã§ããŸã
$ sudo gammu --identify
ã®ãããªãã®ãäžããå¿
èŠããããŸã
: /dev/ttyUSB0 Manufacturer : huawei : unknown (E1550) Firmware : 11.608.12.00.143 IMEI : 123456789101112 SIM (IMSI) : 123456789098765
ããã«åé¡ã¯ãªãã¯ãã§ãããåé¡ãããã°ãåžžã«
$ man gammu
ãšGoogleããããŸãã
ã³ã³ãœãŒã«ããã®æåã®SMS
ãŸããã¢ãã ã䜿çšããæš©éãèšå®ããå¿
èŠããããŸãããããã¯ãã®äŸã§ã®ã¿å¿
èŠãªã®ã§ãåèµ·ååŸã«ãªã»ããããããšããäºå®ãå¿é
ããå¿
èŠã¯ãããŸããã
$ sudo chmod 777 /dev/ttyUSB0
ä»ãSIMã«ãŒããã¢ãã ã«æ¿å
¥ãããŠããŠããéãããã°ãSMSãéä¿¡ã§ããŸã
äŸïŒ
$ sudo echo " Grindel" | gammu sendsms TEXT +79811111111 -unicode
SMSéä¿¡èªåå
ãã®å Žåã®gammuããã±ãŒãžã¯æ€èšŒã«ã®ã¿å¿
èŠã§ããããåŸã§gammu-smsdããŒã¢ã³ã䜿çšããŸããã
圌ã¯ããŒã¿ããŒã¹ããSMSã¡ãã»ãŒãžãéä¿¡ããæ¹æ³ãç¥ã£ãŠããŸãïŒè©³çŽ°ã«ã€ããŠã¯
gammu Webãµã€ãã§èªãããšãã§ããŸããã
æ°ããããŒãžã§ã³ãããã«èšèŒãããŠããããšã«æ³šæããŠãã ããïŒã
ç§ãã¡ã¯çœ®ããŸãïŒ
$ sudo apt-get install gammu-smsd
æ§æ/ etc / gammu-smsdrc
[gammu] port = /dev/ttyUSB0 connection = at [smsd]
次ã«ãããŒã¹ãäœæããå¿
èŠããããŸãã
$ man gammu-smsd-tables
ã§ã¯ãå¿
èŠãªããŒã¿ããŒã¹ã®ãã³ãã¯
docs/sql/mysql.sql
ã«ãããšèšãããŠããŸãããããã°ã©ã ãœãŒã¹ã調ã¹ãå¿
èŠããããšç解ããŠããã®ã§ããããã
ããŠã³ããŒãããåŸïŒããŒãžã§ã³1.28.0ïŒãã¢ãŒã«ã€ãã解åããŠå¿
èŠãªãã®ãèŠã€ããããšãã§ããŸãsqlã¹ã¯ãªããããããŠphpMyAdminãªã©ã䜿çšããŠãä»»æã®äŸ¿å©ãªæ¹æ³ã§å
¥åããŸãïŒèª°ããããåççãªæ¹æ³ãææ¡ããããç§ã¯å¬ããã§ãïŒïŒ
ããããã¹ãŠã®ã¹ãããã®åŸãããŒã¢ã³ãåèµ·åããŸãã
$ sudo /etc/init.d/gammu-smsd restart
泚æïŒ
gammu-smsd
å®è¡ããåŸã
gammu --identify
ã¯ãšã©ãŒã
gammu --identify
ãŸãããããã¯æ£åžžã§ãïŒ
mysqlçµç±ã§SMSãéä¿¡ãã
$ man gammu-smsd-tables
ããã®ã³ãŒãã¯åãphpMyAdminã§å®è¡ã§ããŸã
INSERT INTO outbox ( DestinationNumber, TextDecoded, CreatorID, Coding ) VALUES ( ' ', 'This is a SQL test message', 'Program', 'Default_No_Compression' );
åçã¯æ¬¡ã®ãšããã§ã
- DestinationNumberã¯ãSMSãå°éããçªå·ã§ã
- TextDecoded-æ¥ãã¯ãã®ããã¹ã
- CreatorIDã¯ãã©ã®ããã»ã¹ããã®æçš¿ãäœæãããã瀺ãåãªãã¿ã°ã§ã
- ã³ãŒãã£ã³ã°-ãšã³ã³ãŒããSMSãè±èªã®å Žåã¯ãDefault_No_Compressionãã瀺ããããã·ã¢èªã®å Žåã¯ãUnicode_No_Compressionãã瀺ãããŸãã
泚æïŒ SMSã«éä¿¡ã§ããã®ã¯ãã©ãã³æå160æåãšããªã«æå70æåã ãã§ãïŒ ããå€ãã®ããã¹ããéä¿¡ããããã«ãããã«ãããŒãSMSãããããŸãã Gammu-smsdã¯ãããã®éä¿¡ããµããŒãããŠããŸããããã»ã¹ã¯
$ man gammu-smsd-tables
説æãããŠããŸã
VKããŒãžããã§ãã¯ããããã°ã©ã ãæžã
æ£çŽãªãšãããç§ã¯å®å
šã«éæ¹ã«æ®ãããã®ãããªããã°ã©ã ãæžããããšã¯ãããŸããã§ãããç§ã®ããã°ã©ãã³ã°çµéšã¯ãã¹ãŠãTurbo PascalåŠæ ¡ãšå°ããªjsãããžã§ã¯ããBart Chalkboard Generatorãã«éãããŠããŸããïŒãããã¡ã€ã«ã«ãããŸãïŒã
ç§ã¯ã©ã®èšèªãéžæãããããç¥ããŸããã§ããã QïŒAã§
質åããããšã«ããŸããã
g0ldenãš
avalakã®åçãã©ããããããšãïŒ
ãã®çµæãç§ã¯Pythonãéžæãã
Codecademy㧠PythonãåŠã³å§ããŸããã 䞊è¡ããŠãç§ã¯Pythonã§VK APIã䜿çšããŠäœæ¥ãå®è£
ããæ¹æ³ãæ¢ããŠããŸããã ãããŠãHabréã§èŠã€ããŸãããdzhioevã«æè¬ããŸãïŒ ãŸããç§ã¯ãã£ãããšVK APIãæ±ãå§ããŸããã èªç±æéã®ç 究ã®ããã«ãæ®ãã¯ã»ãšãã©ãªããç§ã¯éåžžã«ãã£ãããšé²ã¿ãŸããã
Pythonã«å€å°ãªããšãæ
£ããŠããã®ã§ïŒCodecademyã§ãªã¹ããèŸæžã«ã¢ã¯ã»ã¹ããŸããïŒãèªåã§ã¹ã¯ãªãããæžãå§ããæºåãã§ããŠãããšå€æããŸããã
ãŸããã¢ããªã±ãŒã·ã§ã³ãåäœããVKontakteããŒãžãç»é²ããããšããå§ããã¢ããªã±ãŒã·ã§ã³ãç»é²ããå¿
èŠããããŸããã ããã¯éåžžã«åçŽã§
ã VKontakteã®
ããã¥ã¡ã³ãã«èšèŒãããŠ
ãããããããã«ã€ããŠã¯èª¬æããŸããã
ã¹ã¯ãªãã解æ
ç°¡åã«èª¬æãããšãã¹ã¯ãªããã®ã¢ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹ã¯æ¬¡ã®ãšããã§ãã
- ããã°ã©ã ã«ãã£ãŠæåŸã«éä¿¡ãããæçš¿ã®IDã調ã¹ã
- æåŸã®æ皿以éã«æ°ããæçš¿ã衚瀺ãããŠãããã©ããã確èªããŸã
- æ°ããæçš¿ã®ããããã§å°ãªããšã1ã€ã®ã°ã«ãŒããèŠã€ããŠãã ããã
- ã°ã«ãŒãçªå·ãèŠã€ãã£ãå Žåã¯ãã°ã«ãŒãçªå·ã§SMSãéä¿¡ããŸãïŒã€ãŸããsmsdããŒã¿ããŒã¹ã®éä¿¡ãã¬ã€ããŒãã«ã«ç¹å®ã®ã¬ã³ãŒããéä¿¡ããŸãïŒ
ããŒã¿ããŒã¹ã«ã€ããŠèª¬æãã䟡å€ããããŸãã VsPostsããã³GroupsããŒãã«ãsmsdããŒã¿ããŒã¹ã«è¿œå ããŸããã VkPostsã§ã¯ãããã°ã©ã ã«ãã£ãŠéä¿¡ããããã¹ãŠã®æçš¿ã®IDãè¿œå ãããããã次åãããããææ°ã®éä¿¡ãããæåŸã®æçš¿ã®IDãèŠæ±ã§ããŸãã ãããŠã°ã«ãŒãã«ã¯ãåŠççªå·ãšã°ã«ãŒãçªå·ããããŸãã æ°ã
ä»ãã¹ã¯ãªããèªäœã¯æççã§ã
å¿
èŠãªã¢ãžã¥ãŒã«ãæ¥ç¶ããŸã
import vk_auth import json import urllib2 from urllib import urlencode import MySQLdb import logging import time import re
ããŒã¹ãžã®æ¥ç¶ãåæåããkrakozyabrãååšããªãããã«ãšã³ã³ãŒããèšå®ããŸã
db = MySQLdb.connect(host="localhost", user=" ", passwd="", db="smsd") cursor = db.cursor() db.set_character_set('utf8') cursor.execute('SET NAMES utf8;') cursor.execute('SET CHARACTER SET utf8;') cursor.execute('SET character_set_connection=utf8;')
vk_authã¢ãžã¥ãŒã«ã®authé¢æ°ã䜿çšããŠãvk apiãŠãŒã¶ãŒåããã¹ã¯ãŒããã¢ããªã±ãŒã·ã§ã³çªå·ããªã¯ãšã¹ãæš©éãéç¥
ããŸã ãã¢ãžã¥ãŒã«ã¯
ããããååŸãããããšãæãåºããŠ
ãã ãã ã
token, user_id = vk_auth.auth(login, password, "3139526", "groups,wall")
ããŒã¯ã³å€æ°ã§ã¢ããªã±ãŒã·ã§ã³ããŒã¯ã³ãååŸããuser_idã§ãããŒã¿ãå
¥åããããŠãŒã¶ãŒã«ç§»åããŸãã
次ã«ãããã«ããã€ãã®å€æ°ãå®çŸ©ããŸã
cursor.execute("SELECT postID FROM VKposts ORDER BY VKposts.number DESC LIMIT 0 , 1;")
ããã°ã©ã ã®äž»èŠéšå
post = call_api("wall.get", [("owner_id", groupId), ("count", "1")], token)[1]
å°ããªé害ããããŸãã æçš¿ã®ããã¹ãã70æåãè¶
ããå Žåã代ããã«ãããªãã®ã¹ã±ãžã¥ãŒã«ãå€æŽãããŸããã+æçš¿ãžã®ãªã³ã¯ãéä¿¡ããŸãã70æåãè¶
ããæåã¯1ã€ã®ããªã«SMSã«åãŸããªãããã§ãïŒäžèšïŒãããŸã ãã«ãããŒãSMSãããããŸããã
logging.infoã¯ãã³ãŒãã®æåã«èšå®ããããã°æ©èœã®æ©èœã§ãã
logging.basicConfig(format='%(asctime)s | %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p', filename='/home/NetDisk/sms/smslog.log',level=logging.DEBUG)
ããã ãã§ãïŒ ããã¿ãå®è¡å¯èœã«ããããã«æ®ããŸã
$ sudo chmod +x
ãããŠãå¿
èŠãªééã§Cronã«è¿œå ããŸãã
ããããgammuãšäžèšã®ãã¹ãŠã®å¯èœæ§ã¯ããã§çµããã§ã¯ãããŸããã ã ãã空æ³ã
èšç»äž
- åŠçããŒã¿ããŒã¹ã®åé
- Webã€ã³ã¿ãŒãã§ãŒã¹ã®äœæ
- ãããŠããããçš®é¡ã®ããããªããšãšãã£ããã£
ãœãŒã¹
PS
ç§ã¯ãããã®ãã¹ãŠã®æŽ»åã«éåžžã«èå³ãããããã®ã¢ã€ãã¢ã«å®å
šã«é
äºãããŸãããããããã¹ãŠè¡ãããšãã§ããŠå匷ã§ããããšãå¬ããæããŸããããå¿
ãããç°¡åã§ã¯ãããŸããã§ãã
èªãã§ãããŠããããšãã楜ããã§ãããããããªïŒ
ããªãã®ã¢ã€ãã¢ã§é 匵ã£ãŠãã ããïŒ
ããã§ãœãŒã¹ãååŸã§ã
ãŸã ã