Προς το περιεχόμενο

systemd-notify


mad-proffessor

Προτεινόμενες αναρτήσεις

Ευχαρίστως όπως βλέπεις είναι ψιλό ότι να'ναι ο κώδικας χρίζει βελτίωσης. Κ εγώ δεν έχω χρόνο αυτό το καιρό, γι'αυτό την έκανα ίσα να δουλεύει.Χτες πρόσθεσα σχόλια σε κάποια σημεία να ξέρει κάποιος αν θέλει να ασχοληθεί.Θα μπω github να δω αν κανεις pull.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 122
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Τελικά βρήκα χρόνο κ κάτι έκανα.

Ένας να δοκιμάσει το install.py?

Tραβάει αλλαγές απο ρεπο

σβήνει χρήστη απο systemd-journal group

σβήνει αρχεία systemd-notify.desktop, systemd-notify.py απο /etc/xdg/autostart και /usr/local/bin αντίστοιχα

sudo python3 install.py python3

 

Come on, feedback

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

θα το δοκιμάσω αύριο λογικά

επίσης άσχετο, δεν είχα πολυδουλέψει python, αλλά κάνω τώρα για μια εργασία σε django και Γ@μάει!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι είναι πολυ καλή γλώσσα αν έχω κάποιο παράπονο είναι οτι δεν έχει  manual σαν της php online , ψάχνω να βρώ τι επιστρέφουν οι συναρτήσεις κ δε λένε στις περισσότερες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Ένας να δοκιμάσει το install.py?

 

Νομίζω ότι θα ήταν καλύτερο να κάνεις ένα setup.py

 

δεν έχει  manual σαν της php online. ψάχνω να βρώ τι επιστρέφουν οι συναρτήσεις κ δε λένε στις περισσότερες.

 

???

 

Python 2

Python 3

 

Αντιγράφω ένα τυχαίο παράδειγμα

 

 

tempfile.TemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]])

Return a file-like object that can be used as a temporary storage area. The file is created using mkstemp(). It will be destroyed as soon as it is closed (including an implicit close when the object is garbage collected). Under Unix, the directory entry for the file is removed immediately after the file is created. Other platforms do not support this; your code should not rely on a temporary file created using this function having or not having a visible name in the file system.

The mode parameter defaults to 'w+b' so that the file created can be read and written without being closed. Binary mode is used so that it behaves consistently on all platforms without regard for the data that is stored. bufsize defaults to -1, meaning that the operating system default is used.

 

The dir, prefix and suffix parameters are passed to mkstemp().

 

The returned object is a true file object on POSIX platforms. On other platforms, it is a file-like object whose file attribute is the underlying true file object. This file-like object can be used in a with statement, just like a normal file.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@pmav

Έψαχνα να βρώ πως να ανοίξω ένα αρχείο σε read-write mode.

 Έπρεπε να googlαρω και να διαβάσω πόσα σαιτ κ πόσα stackoverflow posts για να καταλάβαω οτι αυτο γίνεται με

with open

Στη σελίδα της python με os.open δεν έλεγε πότε να χρησιμοποίησεις την builtin open με λεπτομέρειες.

Εγω πίστευα οτι με

open,read,write(με κάποια lock παράμετρο) και close θα την έκανα τη δουλειά μου.

Οταν γράφεις php ειλικρινά περα απο το manual δε χρείαζεσαι κάτι άλλο. Μιλάμε έχουν για κάθε συνάρτηση ολόκληρη σελίδα με λεπτομέρειες παραδείγματα. Δες π.χ

http://php.net/manual/en/function.fopen.php

http://php.net/manual/en/function.file-get-contents.php

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

Στη python έχουν μια σελίδα όλες οι misc os functions π.χ. Πίστεψε με στη παραγωγικότητα κάνει διαφορά. Τώρα θα μου πεις αν είχες διαβάσει κανα βιβλίο python δε θα τα έλεγες αυτά. Ε τι να κάνουμε δε γίνεται να διαβάζουμε για κάθε γλώσσα που θέλουμε να σχοληθούμε βιβλίο.

Τώρα για την εφαρμογή θέλει μόνο κάποιους ελέγχους παραπάνω το install.py και να δίνει στο χρήστη τη δυνατότητα να βάζει σα raw_input  ποιες services θέλει να "παρακολουθεί" ώστε να γράφει στο αρχείο desktop

Exec=/usr/local/bin/systemd-notify.py iptables.service rc.local.service

Αυτα θα τα διαβάζει απο τη systemd-notify.py και θα ξεκινάει τη κλάσση DbusNotify με τη λίστα που του έδωσε σα raw input ο χρήστης.

Πέρα απο αυτά κ το documentation της κάθε συνάρτησης σε πρώτη φάση δε θέλει κάτι αλλο.

Εγω δε νομίζω να ασχοληθώ πάντως


Aν κάποιος θέλει να ασχοληθει πιο ολοκληρωμένη λύση θα είναι να αλλάξει τη συνάρτηση run() της κλάσσης DbusNotify και να προσθέσει 3 παραμέτρους

Μία boolean με default τιμη False για τον αν θα ξεκινάει, μία παράμετρο λίστα με τις υπηρεσίες που θελει ο χρήστης να ειδοποιείται με default αυτές που έχουμε ήδη, και μια int με τo χρονικό διάστημα σε λεπτά που θα τρέχει το thread. Αυτες τις τιμές θα τις παίρνουμε απο το raw_input στη main μετά.

 

Ευχαρίστως να κάνω merge κώδικα, υπαρχουν 2 branches ένα experimental με δοκιμές ότι θέλετε και το master με τεσταρισμένο κώδικα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ξέχασα να πω αν κάποιος ψήνεται για gui κ άλλες προκλήσεις μπορεί να γίνει αντι για raw_input απο κονσόλα να παίρνει το input του χρήστη με γραφικό(κατα την εγκατάσταση). Απλά σε αυτη τη περίπτωση θα πρέπει να κάνει setuid 0 μέσα απο τη python και όχι απο sudo, su κτλ.Αλλά αφού κάνει τις απαραίτητες δουλειές που πρέπει μέσα απο uid=0 (cp, chmod) μετά θα πρέπει να κάνει setuid σε αυτο που ήταν όταν εκτελεστηκε το install.py στην αρχή. Μιά αρχική προσπάθεια υπάρχει στο experimental branch απο μένα. Όπως βλέπετε υπάρχει δουλειά να γίνει, όρεξη να έχει κανείς.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Τώρα θα μου πεις αν είχες διαβάσει κανα βιβλίο python δε θα τα έλεγες αυτά. Ε τι να κάνουμε δε γίνεται να διαβάζουμε για κάθε γλώσσα που θέλουμε να σχοληθούμε βιβλίο.

όχι αλλά κάποιος που ξέρει προγραμματισμό, βγάζει πρώτα πχ αυτό https://docs.python.org/3.4/tutorial/ και μετά ξεκινάει.

 

Ή αν βιάζεται πολύ, αυτό: http://www.stavros.io/tutorials/python/(προσωπικά δεν το συνιστώ γιατί παραείναι σύντομο αλλά περι ορέξεως).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...

Εδω κ κάποιες μέρες η εφαρμογή έφτασε σε ένα milestone, ευχαριστώ όσους δώσαν feedback. Αν κ θα μπορούσε να γίνει περαιτέρω δουλειά(π.χ ένα gui εγκατάστασης), δε νομίζω ότι είναι απαραίτητο λόγω της κοινής πεποίθεσης ότι ένας χρήστης linux είναι ικανός να τρέξει απο command line με sudo ένα αρχείο.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...

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

ε ναι,γενικα και καλος κωδικας και καλη ιδεα!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ασχοληθήκα λίγο ξανα με την εφαρμογή, έχουν προστεθει κάποια πράγματα + ένα experimental feauture που κάνει την εφαρμογή μας να έχει μια artificial intelligence χροια. Πρεπει να κάνετε clone checkout το experimental branch και να εγκαταστήσετε τις libs για fedora,arch:

espeak

για debian:

espeak, espeak-data

τουλάχιστον έτσι τις βρήκα στο google σε εμένα πρέπει να είχαν περάσει σα dependencies απο την εγκατάσταση του festival.

Περισσότερες πληροφορίες για το πως εγκαθιστάται η εφαρμογη στο README του git(experimental branch).

Επεξ/σία από mad-proffessor
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νομίζω μετα το espeak δε χωράει κάτι άλλο στο systemd-notify. Έκανα merge κώδικα που χρησιμοποιει το python-speak πακέτο με native python calls χωρίς να χρειάζεται κλήση συστήματος λειτουργικού. Τώρα για validation κ sanitazition του input στο setup.py δε νομίζω οτι χρειάζεται δεδόμενου του γεγονότος ότι εσείς δίνετε input -όχι κάποιος που θέλει να βλάψει το σύστημα σας. Κ τι validation να γινει όταν υπάρχουν πάνω απο 100 services? Επίσης τώρα μπορείτε να κάνετε εγκάτασταση όσες φορές θέλετε χωρίς πρόβλημα, προστέθηκε μια function που κάνει reset το αρχείο systemd-notify.desktop που εγκαθιστάται στο /etc/xdg/autostart.

 

Αυτο που μου αρέσει στην εφάρμογη είναι ότι ο κάθενας μπορεί να τη προσωποποιήσει , να τη φέρει στα μέτρα του προσθέτωντας λίγες γραμμές κώδικα. Π.χ στη κλάσση LogReader κάτω απο το pattern μπορεί να βάλει  μια άλλη μεταβλητή για  να βρίσκει απο τα logs το μήνυμα που τον ενδιαφέρει. Αρκει ένα elif branch κάτω απο το if. Είναι θέμα δικό σας τι θα ψάχνετε δεν υπάρχει κάτι standard που θα το υλοποιήσω εγω κ θα αρέσει σε όλους.Υπάρχουν χιλιες δυό υλοποιήσεις,μπορείτε π.χ να μετατρέψετε την εφαρμογή σε ids μέσω LOG target απο το iptables ή  pam auth failures μέσω του debug parameter.

Ελπίζω να ήταν χρήσιμη κ να άρεσε. Για την έκδοση που μιλάει κιόλας (με το espeak ) κάνετε checkout experimental branch, για την απλή το master.

Φιλικά, Γιώργος

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...