ç§ã¯ããã®ã·ã³ãã«ããšäœ¿ãããããããã©ã³ã¹ããã·ã§ã³ã倧奜ãã§ãã ããããç§ãè¿œå ããã®ã¯ã ãã¹ãŠã®ããŠã³ããŒããå®äºãããšãã«ã³ã³ãã¥ãŒã¿ãŒãèªåçã«ãªãã«ããæ©èœã§ãã ç§ã¯Ubuntuã§ãã®æ©èœãèªåçšã«äœæããŸããããããã«èå³ããã人ã¯å¥ã®OSã«èªç±ã«ããçŽãããšæããŸãã
ãã®åé¡ã¯ãTransmissionãã芪åã«æäŸãããRPC-JSONãµãŒãã¹ã«ãã£ãŠè§£æ±ºãããŸããã ãã®æ©èœãæå¹ã«ããã«ã¯ã[éä¿¡]ã§ã[èšå®]ã®[Webã€ã³ã¿ãŒãã§ã€ã¹]ã¿ãã«ç§»åããŠã[Webã€ã³ã¿ãŒãã§ã€ã¹ãæå¹ã«ãã]ãã§ãã¯ããã¯ã¹ããªã³ã«ããŸãã èŠç¥ãã¬äººããã®Webããã«ãžã®ã¢ã¯ã»ã¹ãå¶éããå Žåã¯ããã¹ã¯ãŒããšãŠãŒã¶ãŒåãèšå®ã§ããŸãã
æåã®ã¹ãããã¯ãpython transmissionrpcã®ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããããšã§ãã ããããŸããïŒ
hg clone www.bitbucket.org/blueluna/transmissionrpc
æ³šïŒ hgããã°ã©ã ã¯mercurialããã±ãŒãžã«å«ãŸããŠããŸãã ã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
sudo apt-get install mercurial
ãã®åŸãã¢ãžã¥ãŒã«ã®ãœãŒã¹ã³ãŒããããŒã«ã«ã³ã³ãã¥ãŒã¿ãŒã«ããå Žåã¯ãtransmissionrpcãã£ã¬ã¯ããªã«ç§»åããŠã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
cd transmissionrpc
sudo python setup.py install
ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ãããããã¹ã¯ãªããèªäœãäœæã§ããŸãã ããããæçµçãªç®æšã¯ã³ã³ãã¥ãŒã¿ãŒã®é»æºãåãããšã§ãããããæ¢å®ã§ã¯ç®¡çè æš©éãªãã§ã¯å®è¡ã§ããªããããããã«ããã€ãã®ãžã§ã¹ãã£ãŒãè¡ãå¿ èŠããããŸãã
- ã¹ã¯ãªãã/ usr / bin / shutdownãäœæããŠäœæããŸãã
#!/bin/sh
sudo /sbin/shutdown $*
ã¹ã¯ãªããã®ããã¹ããããããããã«ãéåžžã®/ sbin / shutdownã䜿çšããŸããããã¯ã/ usr / bin / shutdownã«æž¡ããããã¹ãŠã®ã³ãã³ãã©ã€ã³ãã©ã¡ãŒã¿ãŒãåãåããŸãã ãŸãã/ sbin / shutdownã¯sudoã³ãã³ãã§å®è¡ãããŸããããã«ãããã·ã¹ãã 管çè ã«ä»£ãã£ãŠä»ã®ã³ãã³ããå®è¡ã§ããŸãã - ãã®ã¹ã¯ãªãããã·ã£ããããŠã³ã°ã«ãŒãã«å²ãåœãŠãŸãã
chgrp shutdown /usr/bin/shutdown
- ã·ã£ããããŠã³ã°ã«ãŒãã®ã¿ãéå§ããæš©éãèšå®ããŸãã
chmod g+x /usr/bin/shutdown
- sudoããã¹ã¯ãŒããèŠæ±ããªãããã«ã/ etc / sudoersãã¡ã€ã«ã«æ¬¡ã®è¡ãè¿œå ããŸãã
%shutdown ALL= NOPASSWD: /sbin/shutdown
ããã¯ãã·ã£ããããŠã³ã°ã«ãŒãå ã®ãã¹ãŠã®ãŠãŒã¶ãŒãããã¹ã¯ãŒããå ¥åããã«ç®¡çç¹æš©ã§/ sbin / shutdownã¹ã¯ãªãããå®è¡ã§ããããšãæå³ããŸãã - ã·ã£ããããŠã³ã°ã«ãŒããäœæãã
sudo groupaddã·ã£ããããŠã³
groupadd / usermodã䜿çšãããã/ etc / groupãã¡ã€ã«ãç·šéããŠãèªåèªèº«ãè¿œå ããŸãã ç§ã¯åŸè ã®æ¹æ³ã䜿çšããŸãããããã®ããã«/ etc / groupãã¡ã€ã«ã§æ¬¡ã®ãããªè¡ãèŠã€ããå¿ èŠããããŸã
shutdown:x:1002:
ãã®ã°ã«ãŒãã«èªåãè¿œå ããã«ã¯ããã®ãšã³ããªã次ã®ããã«å€æŽããŸãã
shutdown:x:1002:user1
ããã§ãuser1ã¯ãŠãŒã¶ãŒã®ãŠãŒã¶ãŒåã§ãã ãã®ã°ã«ãŒãã«ããã«è€æ°ã®ãŠãŒã¶ãŒãè¿œå ããå¿ èŠãããå Žåã¯ãåãè¡ã«ã³ã³ãã§åºåã£ãŠïŒã¹ããŒã¹ãªãã§ïŒãªã¹ãããŸãã çªå·1001ïŒã°ã«ãŒãIDïŒã¯ç°ãªãå ŽåããããŸãã
æçµçãªãã©ãŒã ã§ã¯ã次ã®ãããªè¡ãååŸããŸããã
shutdown:x:1002:skymanphp
ããã§ããã¹ã¯ãŒããèŠæ±ããã«ã³ã³ãã¥ãŒã¿ãŒã®é»æºããªãã«ããã³ãã³ãã䜿çšããæºåãæŽããŸããã
ããããããã®æ±ºå®ã¯èª°ãã«å°ãæªãã§ããããšãå€æããã®ã§ãããªãã®ææ¡ããããããé¡ãããŸãã
ãããŠãããã«ã¹ã¯ãªããèªäœããããŸãã ã¹ã¯ãªããã®ã³ã¡ã³ãã«ãã¹ãŠãã¯ã£ããããŠãããšæããŸãã
ã泚æ ç§ã¯èªåã®ãšã©ãŒãã³ãã©ã䜿çšããã®ã§ããã¡ã€ã«ããå¿ èŠããããŸãã
/usr/local/lib/python2.6/dist-packages/transmissionrpc-0.5-py2.6.egg/transmissionrpc/transmission.py
å€æŽãå ããïŒã³ã¡ã³ãè¡219-221ãããã¯éèŠã§ã¯ãããŸãããã
*ãã®ãœãŒã¹ã³ãŒãã¯ã ãœãŒã¹ã³ãŒããã€ã©ã€ã¿ãŒã§åŒ·èª¿è¡šç€ºããã SkyManPHPã§å€æŽãããŸãã ã
- ïŒïŒ/ usr / bin / python
- ïŒ-*-ã³ãŒãã£ã³ã°ïŒutf-8-*-
- ïŒã¹ã¯ãªããã®2çªç®ã®ã³ã¡ã³ãè¡ã«æ³šæããŠãã ããã ããã«ãããã¹ã¯ãªããããã¹ãã®Unicodeãšã³ã³ãŒãã£ã³ã°ã«é¢ãã誀解ãé¿ããããšãã§ããŸãã
- ïŒå¯Ÿå¿ããã¢ãžã¥ãŒã«ããå¿ èŠãªæ©èœãã€ã³ããŒããã
- çŸå°æéãstrftimeãsleep ããã®ã€ã³ããŒã
- sys import argv ãã
- os import geteuidãã·ã¹ãã ãã
- transmissionrpc importã¯ã©ã€ã¢ã³ããã
- os.path ãã isfileãã€ã³ããŒã
- ïŒãŠãŒã¶ãŒã管çè ã§ããå¿ èŠã¯ãããŸããã ãã®ãããTransmissionãã«ãŒããšããŠå®è¡ããããšã¯æãŸãããããŸããã ãããŠããªã管çè æš©éãããã®ã§ããïŒ
- geteuidïŒïŒ== 0ã®å ŽåïŒ
- print "\ 033 [1; 31mãã®ã¹ã¯ãªããã管çè ãšããŠå®è¡ããªãã§ãã ããïŒ\ 033 [1; m"
- çµäºïŒïŒ
- ïŒlibnotify-binãã€ã³ã¹ããŒã«ãããŠãããã©ããã確èªããŸã
- use_libnotify = isfileïŒ "/ usr / bin / notify-send" ïŒ
- ïŒããã§ãªãå ŽåããŠãŒã¶ãŒãã¬ã³ããªãŒãªéç¥ã®ããã«ãããè¡ãããšããå§ãããŸãã
- use_libnotifyã§ãªãå ŽåïŒ
- ïŒãŠãŒã¶ãŒã«å°ãã
- res = raw_inputïŒ "\ 033 [1; 33mThe libnotify-binããã±ãŒãžã¯ã€ã³ã¹ããŒã«ãããŠããŸãããã³ãã³ã\ nsudo apt-get install libnotify-binã§ã€ã³ã¹ããŒã«ã§ããŸãã\ nãããå®è¡ããŸããïŒåæãããYãå ¥åããŠEnterãæŒããŸãã m " ïŒ
- [ 'Y' ã 'y' ]ã«ããå ŽåïŒ
- ïŒåœŒãåæããã°ãããã±ãŒãžãã€ã³ã¹ããŒã«ãã
- res = systemïŒ "sudo apt-get install -y libnotify-bin" ïŒ
- res == 0ã®å Žå ïŒ
- ïŒããã±ãŒãžãã€ã³ã¹ããŒã«ãããã®ã ãããïŒ
- print "\ 033 [1; 32mThe libnotify-binããã±ãŒãžã¯æ£åžžã«ã€ã³ã¹ããŒã«ãããŸããïŒ\ 033 [1; m"
- ãã®ä» ïŒ
- ïŒãã¹ã¯ãŒããæ£ããå ¥åãããŠããªãããããã±ãŒãžãããŒãžã£ãŒã«åé¡ãããããã§ãã ãã ããæåŸã®çç±ãšã¯ã»ã©é ãã
- print "\ 033 [1; 31mlibnotify-binããã±ãŒãžã®ã€ã³ã¹ããŒã«äžã«ãšã©ãŒãçºçããŸãããåŸã§èªåã§å®è¡ããŠãã ããã\ 033 [1; m"
- ãã®ä» ïŒ
- ïŒãŸãã¯ã€ã³ã¹ããŒã«ããªã
- print "\ 033 [1; 33mãã®å ŽåãåŸã§ã€ã³ã¹ããŒã«ããããšãããŸã£ããã€ã³ã¹ããŒã«ããªãããšãã§ããŸãã\ 033 [1; m"
- è©ŠããŠãã ãã ïŒ
- ïŒããŠãèšå®ã§æå®ãããé©åãªãã©ã¡ãŒã¿ãŒã䜿çšããŠãTransmission RPCãµãŒãã¹ã«æ¥ç¶ããŠã¿ãŸããã
- tc =ã¯ã©ã€ã¢ã³ãïŒ 'localhost' ãããŒã= 9091ããŠãŒã¶ãŒ=ãªãããã¹ã¯ãŒã=ãªãïŒ
- ãé€ãïŒ
- ïŒãããš...éä¿¡ãããã¯å®è¡ãããŠããªãããã§ãïŒ
- print "\ 033 [1; 31mäŒéãžã®æ¥ç¶äžã«ãšã©ãŒãçºçããŸãããããã°ã©ã ãèšå®ãããŠããªãããWebã€ã³ã¿ãŒãã§ã€ã¹ãæå¹ã«ãªã£ãŠããªãå¯èœæ§ããããŸãã\ 033 [1; m"
- ïŒä»ããããã°ã©ã ãå®è¡ããå¿ èŠããããã©ããå°ããŸãã
- res = raw_inputïŒ "\ 033 [1; 33mStart Transmission NowïŒåæãããYãå ¥åããEnterãæŒããŸãïŒ\ 033 [1; m" ïŒ
- ïŒããã§åœŒã¯ããã§äœã玹ä»ããŸãããïŒ
- [ 'Y' ã 'y' ]ã«ããå ŽåïŒ
- ïŒããŠã圌ãåæãããæã¡äžããŸãããã ããã¯ã°ã©ãŠã³ãã§ç¢ºèªããŠãã ããïŒ
- ã·ã¹ãã ïŒ "transmissionïŒ" ïŒ
- ïŒèµ·åãããŸã§5ç§åŸ ã¡ãŸã
- å¯ãïŒ5ïŒ
- print "\ 033 [1; 32méä¿¡ãæ£åžžã«éå§ãããŸããã\ 033 [1; m"
- ïŒTransmission RPCãµãŒãã¹ãžã®æ¥ç¶ãããäžåºŠè©ŠããŠã¿ãŸããã
- tc =ã¯ã©ã€ã¢ã³ãïŒ 'localhost' ãããŒã= 9091ããŠãŒã¶ãŒ=ãªãããã¹ã¯ãŒã=ãªãïŒ
- ãã®ä» ïŒ
- ïŒçµäºã ããªããæãããã«ããããªãã ã§ã¯ããªããã®ã¹ã¯ãªãããå®è¡ããã®ã§ããïŒ
- print "\ 033 [1; 33mã¹ã¯ãªããã®ä»äžãã\ 033 [1; m"
- çµäºïŒïŒ
- ãã®ä» ïŒ
- ïŒçµå±ã®ãšãããTransmissionãšã®æ¥ç¶ã確ç«ããå ŽåããŠãŒã¶ãŒã«ãã®ããšãåã°ããŸã
- print "\ 033 [1; 32méä¿¡æ¥ç¶ã確ç«ãããŸããã\ 033 [1; m"
- ïŒflagå€æ°downloadã䜿çšããŠãå°ãªããšã1ã€ã®ãã¬ã³ããããŠã³ããŒããããŠãããã©ããã瀺ããŸãã æ€èšŒãµã€ã¯ã«ãéå§ããããã®åæå€= Trueã
- ããŠã³ããŒã= True
- ïŒããŠã³ããŒãã®é²è¡äžïŒãã©ã°ã®ããŠã³ããŒãã確èªïŒ
- ããŠã³ããŒãäžïŒ
- ïŒãããŠããã«Falseã«ãªã»ããããŸã
- ããŠã³ããŒã= False
- ïŒãã¬ã³ãã¯ããã€ã§ããïŒ
- trc = lenïŒtc.listïŒïŒïŒ
- ïŒã³ã³ãœãŒã«ããããã«ããŠãããã«åºåãã
- ã·ã¹ãã ïŒ "clear" ïŒ
- ïŒè²ä»ãïŒ\ 033 [æãã;è²
- print "\ 033 [1; 36m ====ããŠã³ããŒãã¹ããŒã¿ã¹==== \ 033 [1; m"
- ïŒãã¹ãŠã®ãã¬ã³ãã®ãœãŒããå§ããŸããã
- ç¯å²ïŒ1ãtrcïŒã®iã®å ŽåïŒ
- ïŒã€ã³ããã¯ã¹iã§ãã¬ã³ãã«é¢ããæ å ±ãååŸãã
- ãã¬ã³ã= tc.infoïŒiïŒ[i]
- ïŒããã©ã«ãã®è²
- col = "\ 033 [2; 37m"
- ïŒå人ã®å³ãšè²ã¯éããŸãïŒ
- torrent.status == "seeding"ã®å Žå ïŒ
- col = "\ 033 [1; 36m"
- elif torrent.status == "ããŠã³ããŒãäž" ïŒ
- col = "\ 033 [1; 32m"
- elif torrent.status == "checking" ïŒ
- col = "\ 033 [1; 34m"
- print col + torrent.status + "ïŒ" + strïŒ "ïŒ .3g" ïŒ torrent.progressïŒ+ "ïŒ ïŒ" + torrent.name + "\ 033 [1; m"
- ïŒããŠã³ããŒã/ãã§ãã¯ãããŠããŸããïŒ ããã§ãªãå ŽåãããŠã³ããŒããã©ã°ãFalseã«èšå®ãããããããã®ã«ãŒãã¯äžæ¢ãããŸãã
- ããŠã³ããŒã=ããŠã³ããŒããŸãã¯ïŒtorrent.status == "downloading" ïŒãŸãã¯ïŒtorrent.status == "checking" ïŒ
- print "\ 033 [1; 36m ==== Total torrentsïŒ" + strïŒtrcïŒ+ "==== \ 033 [1; m"
- ïŒããäžåºŠç¢ºèªããåã«äŒæ©ãåã
- å¯ãïŒ10ïŒ
- ïŒããã«æ¥ãã®ã§ãããŠã³ããŒã= Falseãæå³ããŸãã ããŠãã³ã³ãã¥ãŒã¿ã®ã·ã£ããããŠã³æé ãéå§ããŸããã
- è©ŠããŠãã ãã ïŒ
- ïŒlibnotify-binããã±ãŒãžãã€ã³ã¹ããŒã«ãããŠããå ŽåãããããŠãŒã¶ãŒã«çŸããäŒããŸãããã
- use_libnotifyã®å Žå ïŒ
- systemïŒ 'notify-send "ãã¹ãŠã®ããŠã³ããŒããå®äºããŸãã" "ã·ã¹ãã ãã·ã£ããããŠã³ããŠããŸããã¹ã¯ãªãããŠã£ã³ããŠã§Ctrl + CãæŒããšãã¹ã¯ãªãããäžæã§ããŸãã" -i /usr/share/icons/gnome/scalable/actions/exit.svg' ïŒ
- ïŒãŸãã¯ããªããããã§ã¯ãªã...
- print "\ 033 [1; 31mãã¹ãŠã®ããŠã³ããŒããå®äºããŸãããã·ã¹ãã ãã·ã£ããããŠã³ããŠããŸããã¹ã¯ãªãããŠã£ã³ããŠã§Ctrl + CãæŒããšãã¹ã¯ãªãããäžæã§ããŸãã\ 033 [1; m"
- ïŒãŠãŒã¶ãŒã«æåŸã®ãã£ã³ã¹ãäžããŸããã-ã¹ã¯ãªãããç Žã30ç§
- å¯ãïŒ30ïŒ
- ïŒããã§ãããŒã®çµã¿åããCtrl + CãæŒããŠäžæããå Žå
- KeyboardInterruptãé€ãïŒ
- ïŒlibnotify-binããã±ãŒãžãã€ã³ã¹ããŒã«ãããŠããå ŽåãããããŠãŒã¶ãŒã«çŸããäŒããŸãããã
- use_libnotifyã®å Žå ïŒ
- ã·ã¹ãã ïŒ 'notify-send "Shutdown stopped" "Interrupted by userã" -i /usr/share/icons/gnome/scalable/actions/redo.svg' ïŒ
- ïŒãŸãã¯ããªããããã§ã¯ãªã...
- print "\ 033 [1; 31mã·ã£ããããŠã³ãåæ¢ããŸãã" "ãŠãŒã¶ãŒã«ãã£ãŠäžæãããŸãããã¹ã¯ãªãããçµäºããŸã\ 033 [1; m"
- ïŒã¹ã¯ãªãããçµäº
- çµäºïŒïŒ
- ïŒããããå®éã«ã¯ãããã¯ã·ã¹ãã ã®å®äºãéå§ããé¢æ°ã§ãã ã·ã£ããããŠã³ïŒ
- ã·ã¹ãã ïŒ "/ usr / bin / shutdown -h now" ïŒ
- ïŒç ã£ãŠãããŠãŒã¶ãŒãçªç¶é¢çœããªã£ãå Žåãã¹ã¯ãªãããã·ã£ããããŠã³ãéå§ãããšãã«ãçšéèšé²ã¢ãŒãã§ãã®ããã®ãã¡ã€ã«ãéããŸã
- f = openïŒ '/tmp/shutdownctl.time' ã 'a' ïŒ
- ïŒãããŠãæéã瀺ãã€ãã³ããããã«æžãçããŸãã
- f.writeïŒ ãã·ã£ããããŠã³ãéå§ãããã + strftimeïŒ ãïŒ aãïŒ dïŒ bïŒ YïŒ HïŒïŒ MïŒïŒ Sã ãlocaltimeïŒïŒïŒ+ '\ n' ïŒ
- ïŒæåŸã«ããã°ãã¡ã€ã«ãéããŸãã
- f.close
- ïŒããã ãã§ãïŒ
å¿ èŠã«å¿ããŠãtransmissionrpcã¢ãžã¥ãŒã«ã«é¢ããããã¥ã¡ã³ãã®äœ¿çšãçµäºã§ããŸã ã ãšã¯ããããã®ãããªãœãªã¥ãŒã·ã§ã³ã¯ãç§ãæã圢ã§èŠã€ããããªãã£ããšããŠãããã§ã«ã€ã³ã¿ãŒãããäžã«ãããšä¿¡ããŠããŸãã
ãããã£ãŠãç§ã¯ãªãªãžãã«ã®ãµããããŸããã ã¯ããç§ã¯Pythonã§ãŸã£ããæžããŠããŸãã-Googleã®äžéšã®ããŒã ã¯èŠåŒµã£ãŠããŸããã ãããã誰ãããããå¿ èŠãšãããªãã°ãç§ã¯ããããã§ãã