actions logging και undo στο bash ?

Panagiotis Atmatzidis p.atmatzidis at gmail.com
Mon Feb 20 11:37:41 EET 2006


Nick Demou wrote:
> Τον τελευταίο καιρό έκανα πολλές επεμβάσεις (εγκαταστάσεις και
> ρυθμίσεις) σε έναν linux server. Ήμουν τυχερός και έκανα μόνο ένα
> λάθος που διορθώθηκε εύκολα. Συνειδητοποίησα όμως πως, ειδικά όταν
> πρέπει να κάνεις πολλές αλλαγές, είναι πολύ εύκολο να χαλάσεις κάτι
> και να μην θυμάσαι τι μπορεί να φταίει.
> 
> Το history μου φάνηκε πολύ χρήσιμο αλλά κατάλαβα ότι δεν θα είναι
> πάντα αρκετό. Έψαξα στο google για κάτι πιο πλήρες και βρήκα την
> εντολή script η οποία όμως αν ανοίξεις ένα vi/emacs/pico/less/... κτλ
> γεμίζει σκουπίδια και γίνεται πολύ άβολη. Τελικά διαβάζοντας το bash
> manual page σκαρφίστικά ένα κόλπο[1] που σου επιτρέπει να κάνεις ένα
> history χωρίς πρακτικό όριο βάθους χρόνου στο οποίο εκτός από την
> εντολή καταγράφεται και η ώρα εκτέλεσης[2] αλλά και το current
> directory[2] μέσα στο οποίο εκτελέστηκε η εντολή (πολύ σημαντικό όταν
> βλέπεις εντολές του τύπου rm *):
> 
> time stamp      command   pwd
> -----------------------------------------------------
> 11/12 09:40     rm afile         /home/user
> ....
> 
> έτσι έλυσα το πρόβλημα του να ξέρω "πότε έκανα τι". Μου μένουν όμως
> ακόμα δύο πράγματα για να κοιμάμαι πιο ήσυχος:
> 
> 1) η rm αντί να σβήνει τα αρχεία να τα κρατάει backup σε κάποιο άλλο φάκελο
> 2) όλα τα αρχεία κειμένου που ανοίγω με τον text editor (pico) να
> γίνονται backup με timestamp σε έναν άλλο φάκελο
> 
>  * Υπάρχει κάποιος άλλος στη λίστα με τους ίδιους προβληματισμούς?  Τι
> λύση εφαρμόζει?
>  * Ιδέες για logging χωρίς τα drawbacks της δικιάς μου μεθόδου (βλέπε [2])
>  * Για τα 1), 2) ξέρετε κάτι έτοιμο ή πρέπει να γράψω τα δυο σχετικά
> scripts (μου έκανε εντύπωση που δεν βρήκα κάτι στο πρώτο googling
> around αλλά μπορεί να ήμουν και πολύ νυσταγμένος :-) )?
> 
> 
> _________________
> [1] αρκεί να έχεις αυτό το one-liner στο .bashrc  (και ενεργοποιημένο
> το history με depth τουλάχιστον 1):
> PROMPT_COMMAND='echo -ne $(date +%d-%m_%H:%M)"\t" >> /${HOME}/.hist;
> echo -ne $(history 1 | sed "s/^ *[0123456789]* *//")"\t" >>
> /${HOME}/.hist; pwd >> /${HOME}/.hist'
> 
> (η παραπάνω εντολή εκτελείται ΠΡΙΝ από κάθε άλλη εντολή που εισάγουμε
> στο bash και δημιουργεί τις γραμμές του αρχείου ~/.hist)
> 
> [2] για την ακρίβεια ή ώρα και το current dir αφορούν στην στιγμή που
> εκτελέστηκε η αμέσως επόμενη εντολή από το bash. Επίσης δεν
> καταγράφεται η τελευταία εντολή κάθε session.
> 
> 
Υπάρχει πακέτο[1] το οποίο μεταφέρει στον syslog deamon αναλυτικότατο 
bash log.. ποιος, που, πότε, γιατί (αυτό θα γίνει στο μέλλον είναι στα 
TODO hohoho) κτλ.
Εναλλακτικά μπορείς να θέσεις το όριο του bash_history. Εναλλακτικότερα 
υπάρχουν kernel patches & user land προγράμματα τα οποία παρακολουθούν 
και καταγράφουν κάθε κίνηση του προ επιλεγόμενου χρήστη ή όλων των 
χρηστών αν το επιθυμείς.

Λοιπόν, επειδή δεν έχω πρόσβαση στο Linux Server <irony>ας είναι καλά η 
Otenet που προστατεύει από ιούς</irony> δεν θυμάμαι τα ονόματα, από τα 
προγράμματα που σου ανέφερα αλλά θα τα βρω σίγουρα όταν πάω σπίτι. Αν 
δεν απαντήσουν τα παιδιά έως το βράδυ θα σου τα στείλω.

Το bash-logging είναι το ένα I think. Δεν θυμάμαι άμα είναι πακέτο η 
flag, τώρα που το σκέφτομαι είναι πιο λογικό να είναι flag.

ps. Όταν ψάχνεις προγράμματα αντί για το Google πήγαινε στο Freshmeat.




More information about the Linux-greek-users mailing list