Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό ftso » 23 Φεβ 2009, 15:52

Ναι, είναι python...

Δοκίμασε το παρακάτω να δεις αν δουλεύει:
Κώδικας: Επιλογή όλων

def handle_event(self, event):
if event['message'] == "torrent has finished downloading":
if self.config.get("enable_tray_blink"):
self.set_tray_flashing_on()
if self.config.get("enable_notification"):
self.show_notification(event)
if self.config.get("enable_sound"):
self.play_sound()
os.system('mkdir ~/ShutSys')


Αυτό που θα γίνει είναι απλά να δημιουργηθεί ένας κατάλογος στο home με το όνομα ShutSys...

Επίσης στο στην αρχή του κώδικα, εκεί που έχει τα import , πρόσθεσε και αυτό:
Κώδικας: Επιλογή όλων
import os
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό sparus » 23 Φεβ 2009, 16:47

Προσπάθησα να προσθέσω νέο plugin στο usr/share/deluge/plugins αλλά δεν άνοιγε η εφαρμογή.
Πείραξα το __init__.py του TorrentNotification και να τι μου βγάζει (εξακολουθεί να μην ανοίγει)
Κώδικας: Επιλογή όλων
:-$deluge
no existing Deluge session
Starting new Deluge session...
deluge_core; using libtorrent 0.13.0.0. Compiled with NDEBUG.
Applying preferences
save uploaded memory
Pickling state...
Scanning plugin dir /usr/share/deluge/plugins
Initialising plugin EventLogging
Initialising plugin Scheduler
Initialising plugin DesiredRatio
Traceback (most recent call last):
File "/usr/bin/deluge", line 132, in <module>
start_deluge()
File "/usr/bin/deluge", line 115, in start_deluge
interface = deluge.interface.DelugeGTK(config_dir=deluge.common.CONFIG_DIR)
File "/var/lib/python-support/python2.5/deluge/interface.py", line 64, in __init__
self.plugins.scan_for_plugins()
File "/var/lib/python-support/python2.5/deluge/plugins.py", line 61, in scan_for_plugins
mod = __import__(modname, globals(), locals(), [''])
File "/usr/share/deluge/plugins/TorrentNotification/__init__.py", line 86
if self.config.get("enable_sound"):
^
IndentationError: unindent does not match any outer indentation level
Debian Squeeze (64bit)/ Ubuntu 10.10 (32bit)
AMD Athlon 64 (3200+) / Asus A8N5X / Gainward GeForce 6500 / 2GB DDR
Άβαταρ μέλους
sparus
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 439
Εγγραφή: 31 Μάιος 2008, 15:41
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό logari81 » 23 Φεβ 2009, 17:19

προσεξε αν χρησιμοποιησες TABS ή κενα σε αυτο που προσθεσες, εχουνε σημασια, δες τι χρησιμοποιειται στο υπολοιπο μερος και καντο αντιστοιχα.
http://opensourceecology.org/


Λειτουργικό: Ubuntu 10.04 lucid 64-bitΠροδιαγραφές: 4x Intel Core i5 CPU M 450 2.40GHz ‖ RAM 3696 MiB ‖ Lenovo KL3 - LENOVO IdeaPad Y560
Κάρτα γραφικών: ATI Device [1002:68c0]Ασύρματο: wlan0: Atheros Inc. AR928X Wireless Network Adapter (PCI-Express) [168c:002a] (rev 01)
logari81
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6074
Εγγραφή: 14 Μάιος 2008, 10:40
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό sparus » 23 Φεβ 2009, 19:05

Bingo! Ευχαριστώ για τη βοήθεια!
Με το που κατέβηκε ένα αρχείο δημιουργήθηκε το ~/ShutSys
Αυτός ο κατάλογος όμως πως θα με βοηθήσει να κλείσω τον υπολογιστή;
Αισθάνομαι άσχημα να σας τα ρωτάω όλα. Υπάρχει κάτι να διαβάσω να πάρω ιδέες; Έριξα και μια ματιά στα wikibooks που σχετίζονται με python, σωστή μελέτη όμως θα πέσει μετά την Παρασκευή που τελειώνει και η εξεταστική μου.
Debian Squeeze (64bit)/ Ubuntu 10.10 (32bit)
AMD Athlon 64 (3200+) / Asus A8N5X / Gainward GeForce 6500 / 2GB DDR
Άβαταρ μέλους
sparus
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 439
Εγγραφή: 31 Μάιος 2008, 15:41
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό ftso » 23 Φεβ 2009, 21:17

αντί για mkdir ~/ShutSys θα βάλεις στον κώδικα την εντολή που κάνει shutdown :D
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό sparus » 23 Φεβ 2009, 22:48

Σωστός! Πως δεν το σκέφτηκα :oops:
Λοιπόν όσοι ενδιαφέρονται να εφαρμόσουν αυτή την "πατέντα" μπορούν να αλλάξουν το /usr/share/deluge/plugins/TorrentNotification/__init__.py με αυτό εδώ:
Κώδικας: Επιλογή όλων
# Copyright (C) 2007 - Micah Bucy <eternalsword@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

### Initialization ###

plugin_name = "Torrent Notification"
plugin_author = "Micah Bucy"
plugin_version = "0.1"
plugin_description = _("Make tray icon blink when torrent finishes downloading \
and/or popup a notification")

def deluge_init(deluge_path):
global path
path = deluge_path

def enable(core, interface):
global path
return TorrentNotification(path, core, interface)

### The Plugin ###
import deluge
import deluge.common
import gtk
import os.path
import os

class TorrentNotification:

def __init__(self, path, core, interface):
print "Found TorrentNotification plugin..."
import os.path
self.path = path
self.core = core
self.interface = interface
self.window = self.interface.window
self.window.connect("focus_in_event", self.set_tray_flashing_off)
self.core.connect_event(self.core.constants['EVENT_FINISHED'], self.handle_event)

# Create an options file and try to load existing Values
self.config_file = os.path.join(deluge.common.CONFIG_DIR, "notification.conf")
if deluge.common.windows_check():
self.config = deluge.pref.Preferences(self.config_file, False,
defaults={'enable_tray_blink' : True,
'enable_notification' : False,
'enable_sound' : False,
'sound_path' : os.path.expanduser("~")})
else:
self.config = deluge.pref.Preferences(self.config_file, False,
defaults={'enable_tray_blink' : True,
'enable_notification' : True,
'enable_sound' : False,
'sound_path' : os.path.expanduser("~")})
try:
self.config.load()
except IOError:
pass

self.glade = gtk.glade.XML(os.path.join(path, "notification_preferences.glade"))
self.dialog = self.glade.get_widget("dialog")
self.dialog.set_position(gtk.WIN_POS_CENTER)
self.glade.signal_autoconnect({
'toggle_ui': self.toggle_ui,
'dialog_ok': self.dialog_ok,
'dialog_cancel': self.dialog_cancel
})

def handle_event(self, event):
if event['message'] == "torrent has finished downloading":
if self.config.get("enable_tray_blink"):
self.set_tray_flashing_on()
if self.config.get("enable_notification"):
self.show_notification(event)
if self.config.get("enable_sound"):
self.play_sound()
os.system('sudo shutdown -h now')

def unload(self):
self.core.disconnect_event(self.core.constants['EVENT_FINISHED'], self.handle_event)
self.config.save(self.config_file)

def set_tray_flashing_off(self, focusdata1, focusdata2):
self.interface.tray_icon.set_blinking(False)

def set_tray_flashing_on(self):
if self.window.has_toplevel_focus() is not True:
self.interface.tray_icon.set_blinking(True)

def show_notification(self, event):
if not deluge.common.windows_check():
try:
import pynotify
except:
pass
else:
state = self.interface.manager.get_torrent_state(event['unique_ID'])
if pynotify.init("Deluge"):
n = pynotify.Notification(_("Torrent complete"), state['name'])
n.set_icon_from_pixbuf(deluge.common.get_logo(48))
if not n.show():
print "Failed to send notification"
else:
pass

def configure(self, window):
self.glade.get_widget("chk_tray_blink").set_active(self.config.get("enable_tray_blink"))
if deluge.common.windows_check():
self.glade.get_widget("chk_notification").set_active(False)
self.glade.get_widget("chk_notification").set_sensitive(False)
self.glade.get_widget("chk_sound").set_active(False)
self.glade.get_widget("chk_sound").set_sensitive(False)
self.glade.get_widget("sound_path_button").set_sensitive(False)
else:
self.glade.get_widget("chk_notification").set_active(self.config.get("enable_notification"))
self.glade.get_widget("chk_sound").set_active(self.config.get("enable_sound"))
self.glade.get_widget("sound_path_button").set_sensitive(self.config.get("enable_sound"))
self.glade.get_widget("sound_path_button").set_filename(self.config.get("sound_path"))
self.dialog.set_transient_for(window)
self.dialog.show()

def dialog_ok(self, source):
self.dialog.hide()
self.config.set("enable_tray_blink", self.glade.get_widget("chk_tray_blink").get_active())
self.config.set("enable_notification", self.glade.get_widget("chk_notification").get_active())
self.config.set("enable_sound", self.glade.get_widget("chk_sound").get_active())
self.config.set("sound_path", self.glade.get_widget("sound_path_button").get_filename())

def dialog_cancel(self, source):
self.dialog.hide()

def toggle_ui(self, widget):
value = widget.get_active()
if widget == self.glade.get_widget("chk_sound"):
self.glade.get_widget("sound_path_button").set_sensitive(value)

def play_sound(self):
if not deluge.common.windows_check():
try:
import pygame
except:
pass
else:
import sys
pygame.init()
try:
name = self.config.get("sound_path")
except:
print "no file set"
try:
alert_sound = pygame.mixer.music
alert_sound.load(name)
alert_sound.play()
except pygame.error, message:
print 'Cannot load sound:'
else:
pass

στη συνέχεια δίνουμε στο τερματικό
Κώδικας: Επιλογή όλων
sudo visudo

και προσθέτουμε στο τέλος αυτή τη γραμμή:
Κώδικας: Επιλογή όλων
%admin All=(ALL) NOPASSWD:/usr/share/deluge/plugins/TorrentNotification/__init_.py

και τέλος αποθηκεύουμε τις αλλαγές σύμφωνα με τις οδηγίες που έχει στο κάτω μέρος του τερματικού.
Τώρα όποτε το πρόσθετο Torrent notification είναι ενεργοποιημένο, με το που κατέβει ένα αρχείο ο υπολογιστής μας θα κλείσει αυτομάτως κι εμείς θα μπορούμε να κοιμόμαστε ήσυχοι ότι δεν σπαταλούμε ρεύμα. (Αν και καλό θα ήταν να μην τον αφήνουμε ανοιχτό πολλές ώρες μόνο για downloading.)
Σας ευχαριστώ παιδιά που με βοηθήσατε. Όταν βρω λίγο χρόνο θα προσπαθήσω να το κάνω κανονικό πρόσθετο μήπως και ενδιαφέρονται στην κοινότητα του deluge.
Debian Squeeze (64bit)/ Ubuntu 10.10 (32bit)
AMD Athlon 64 (3200+) / Asus A8N5X / Gainward GeForce 6500 / 2GB DDR
Άβαταρ μέλους
sparus
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 439
Εγγραφή: 31 Μάιος 2008, 15:41
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό logari81 » 23 Φεβ 2009, 23:28

ωραία, υποθετω όμως ότι απο αποψη ασφάλειας η αλλαγη που κανεις με το visudo δεν ειναι και ότι καλυτερο. Ολο και καποιος καλυτερος τροπος θα υπαρχει αν και αυτην την στιγμη δεν μου ερχεται κατι.
http://opensourceecology.org/


Λειτουργικό: Ubuntu 10.04 lucid 64-bitΠροδιαγραφές: 4x Intel Core i5 CPU M 450 2.40GHz ‖ RAM 3696 MiB ‖ Lenovo KL3 - LENOVO IdeaPad Y560
Κάρτα γραφικών: ATI Device [1002:68c0]Ασύρματο: wlan0: Atheros Inc. AR928X Wireless Network Adapter (PCI-Express) [168c:002a] (rev 01)
logari81
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6074
Εγγραφή: 14 Μάιος 2008, 10:40
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό chazisop » 23 Φεβ 2009, 23:51

Αν έχεις σωστά ορισμένα τα δικαιώματα του αρχείου ... δηλαδή να μπορείς να το εκτελέσεις μόνο εσύ , έχεις όση ασφάλεια μπορεί να σου προσφέρει το linux ως απλό χρήστη , αρκετά μεγάλη...

Ίσως αν αφαιρέσεις τη γραμμή που πρόσθεσες με το sudo visudo (πάλι με τον ίδιο τρόπο) αλλά δώσεις στο script δικαιώματα εκτέλεσης μόνο για root , να δίνεις το κωδικό του root μόνο όταν ξεκινά το τρέξιμο του προγράμματος και να μη στον ζητάει μετά ... όπως γίνεται με όλα τα προγράμματα. Βέβαια αυτά θεωρητικά τα λέω και δεν τα έχω δοκιμάσει στη πράξη , οπότε δοκίμασε το να δεις αν σου ζητάει το κωδικό ή όχι , αν καταφέρεις να τρέχει έτσι είναι ΣΑΦΩΣ καλύτερα... Εγώ το είχα κάνει έτσι , γιατί είχα φτιάξει ένα scriptaki που εκκινούσε τον υπολογιστή έτσι ώστε όταν κάτσω μετά το login να μπορώ να έχω ότι ήθελα έτοιμο...

Πράγματι αν κάποιος καταφέρει να ελέγχει το pc σου σαν να είναι εσύ (πχ με κάποιο trojan) μπορεί να αλλάξει το script και να το κάνει ότι θέλει.. μιας και το script έχει ουσιαστικά "admin rights"... αλλά βέβαια για να ξέρει ότι το script αυτό έχει αυτά τα rights θα πρέπει είτε να το ξέρει είτε να ξέρει το κωδικό του root , οπότε ούτως ή άλλως δε πειράζει, έχει το τρόπο του να διαλύσει το σύστημα...

Για το shutdown σόρρυ.. έγω πάντα το χρησιμοποιώ ως sudo shutdown now -r για να κάνω ρεστάρτ , βαριέμαι τα κουμπάκια :P
Επίπεδο Γνώσεων: Linux: Μέτριο / Προγραμματισμός: Ναι / Αγγλικά:Καλά
Ubuntu 8.10 Intrepid Ibex
Intel Core2 6400 @ 2.13GHz , 3GB RAM , Nvidia 7600 GT , 2 x 120GB Western Digital hdd , 1x1TB Seagate hdd
chazisop
punkTUX
punkTUX
 
Δημοσιεύσεις: 160
Εγγραφή: 20 Νοέμ 2008, 04:19
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό ftso » 24 Φεβ 2009, 00:58

logari81 έγραψε:ωραία, υποθετω όμως ότι απο αποψη ασφάλειας η αλλαγη που κανεις με το visudo δεν ειναι και ότι καλυτερο. Ολο και καποιος καλυτερος τροπος θα υπαρχει αν και αυτην την στιγμη δεν μου ερχεται κατι.


Το μόνο που μου έρχεται είναι το set uid...

Εκτελούμε:
Κώδικας: Επιλογή όλων
sudo chmod +s /sbin/shutdown

και πλέον όποιος χρήστης εκτελέσει το shutdown το κάνει με δικαιώματα root!
(δεν χρειάζεται sudo)
Η άδεια αυτή υπάρχει στο passwd για παράδειγμα ώστε να μπορούν όλοι οι χρήστες να το εκτελέσουν.
Βέβαια ούτε αυτήν είναι καλύτερη λύση απο θέμα ασφάλειας καθώς κάποιος που έχει γνώσεις μπορεί να μπερδέψει το σύστημα αφήνοντας το bit ενεργό για να εκτελέσει αυτό που θέλει.
Όπως και να έχει όμως 100% ασφαλές σύστημα δεν υπάρχει, οπότε νομίζω πως δεν υπάρχει πρόβλημα να γίνει μια τέτοια ενέργεια, ειδικά σε ένα Desktop σύστημα...
Άβαταρ μέλους
ftso
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6409
Εγγραφή: 12 Μάιος 2008, 13:40
Τοποθεσία: Αθήνα
IRC: ftso
Εκτύπωση

Re: Αυτόματο κλείσιμο H/Y όταν ολοκληρωθεί το download

Δημοσίευσηαπό sparus » 24 Φεβ 2009, 03:54

Η αλήθεια είναι ότι κι εμένα με προβλημάτιζε αυτό με το sudo.
Κοίταξα όμως το πρόγραμμα που είχε προτείνει νωρίτερα ο linuxman για να δω πως αποφεύγει αυτό το πρόβλημα. Έχει να παραθυράκι κάτω και σου ζητάει εκεί τον κωδικό.
Εικόνα
Ένα πρόσθετο που θα σου ζήταγε κωδικό ασφαλείας μόνο όταν το ενεργοποιείς (με κάποιο παρόμοιο τρόπο) θα ήταν μάλλον το ιδανικότερο από άποψη ασφάλειας.
Αυτό το πρόγραμμα όμως το βάζει κατευθείαν σε κονσόλα. Το πρόσθετο πως θα τον διαχειρίζεται μέχρι να χρειαστεί; Πάλι δεν τίθεται θέμα ασφαλείας;

@linuxman
Που βρίσκεται ο source code για το πρόγραμμα που μου έστειλες;
Debian Squeeze (64bit)/ Ubuntu 10.10 (32bit)
AMD Athlon 64 (3200+) / Asus A8N5X / Gainward GeForce 6500 / 2GB DDR
Άβαταρ μέλους
sparus
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 439
Εγγραφή: 31 Μάιος 2008, 15:41
Εκτύπωση

ΠροηγούμενηΕπόμενο

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron