hg clone www.bitbucket.org/blueluna/transmissionrpc
sudo apt-get install mercurial
cd transmissionrpcsudo python setup.py install
#!/bin/shsudo /sbin/shutdown $*
chgrp shutdown /usr/bin/shutdown
chmod g+x /usr/bin/shutdown
%shutdown ALL= NOPASSWD: /sbin/shutdown
shutdown:x:1002:
shutdown:x:1002:user1
shutdown:x:1002: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ïŒããã ãã§ãïŒ*ãã®ãœãŒã¹ã³ãŒãã¯ã ãœãŒã¹ã³ãŒããã€ã©ã€ã¿ãŒã§åŒ·èª¿è¡šç€ºããã SkyManPHPã§å€æŽãããŸãã ã
Source: https://habr.com/ru/post/J93004/More articles:DrupalCampKyiv 2010-æ¥ä»ã®ç§»è¡6æ10ã12æ¥è©äŸ¡ãšSBCã«ã€ããŠGoogleãã©ãŒèªç±ãŸãã¯èªç±ã®å¹»æ³ïŒgosuslugi.ruã§ãã¹ããŒããååŸããæ¹æ³ã¢ã¯ã·ã§ã³ãSwifts EggsããŸãã¯ã€ã³ã¿ãŒãããã®è²©å£²æ¹æ³VKIDïŒOpenID峿ã¢ãŒããšå±æ§äº€æServer2008ãäžæãªããã€ã¹ãã©ã€ããŒãæ£åžžã«ã€ã³ã¹ããŒã«ãããŸããç¶æ ã«ã€ããŠã 泚æãç¶æ ã ãµã€ããªã©CEOãã£ã¹ã³All Articles