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

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

Δημοσ.

Γεια σας,

 

Έχω έναν συναγερμό τον οποίο έχω συνδέσει με το τηλεφωνικό μου κέντρο το οποίο βασίζεται σε linux. Ο συναγερμός αναφέρει τα γεγονότα (π.χ. όταν αρχίζει να χτυπάει) με τη μορφή ενός κωδικού. Για παράδειγμα, 1234 μπορεί να σημαίνει ότι χτυπάει ο συναγερμός λόγω του ότι άνοιξε η εξώπορτα. Το τηλεφωνικό κέντρο αφού λάβει τον κωδικό, τον αποθηκεύει σε ένα καινούργιο txt με ονομασία event-xxxxx (όπου xxxxx ένας τυχαίος αριθμός) και στη συνέχεια εκτελεί ένα alarm.php το οποίο:

 

1) Βρίσκει το τελευταίο event-xxxxx που δημιουργήθηκε (συνεπώς το τελευταίο γεγονός που ανέφερε ο συναγερμός)

2) το αντιγράφει σε ένα txt που λέγεται latest.txt

3) Καλεί ένα άλλο alarmparse.php το οποίο ανοίγει το latest.txt, αφαιρεί κάποιες γραμμές που δεν χρειάζονται και μετατρέπει τους κωδικούς σε κείμενο, για παράδειγμα αντί το latest.txt να έχει μέσα 1234, έχει "1234 άνοιξε η εξώπορτα".

4) Στέλνει με email το latest.txt το οποίο πλέον έχει κείμενο με το τι ανέφερε ο συναγερμός.

<?php
cd /tmp;
cp `ls -t1 | head -1` /etc/asterisk/alarm/latest.txt;
php /etc/asterisk/alarm/alarmparse.php;
mail -s "Synagermos Spitiou" [email protected]  -- -f [email protected] </etc/asterisk/alarm/latest.txt;
?>

Το πρόβλημα μου είναι ότι ο συναγερμός αναφέρει το ίδιο γεγονός 2-3 φορές, οπότε λαμβάνω το ίδιο email πολλές φορές. Θέλω λοιπόν να μου στέλνει email to σκριπτάκι μόνο εάν το τελευταίο γεγονός είναι διαφορετικό από το προηγούμενο. Δυστυχώς παρά τις προσπάθειες μου (δεν έχω ιδέα απο php) δεν το έχω καταφέρει να δουλέψει. Αυτή είναι η σκέψη μου.

 

Το σκριπτακι:

 

1) Αντιγράφει το latest.txt σε ένα αρχείο που ονομάζεται previous.txt, ώστε να έχουμε αποθηκευμένο τί γεγονός ανέφερε την προηγούμενη φορά ο συναγερμός

1) Βρίσκει το τελευταίο event-xxxxx που δημιουργήθηκε (συνεπώς το τελευταίο γεγονός που ανέφερε ο συναγερμός)

2) το αντιγράφει στο latest.txt

3) Καλεί ένα άλλο alarmparse.php το οποίο ανοίγει το latest.txt, αφαιρεί κάποιες γραμμές που δεν χρειάζονται και μετατρέπει τους κωδικούς σε κείμενο, για παράδειγμα αντί το latest.txt να έχει μέσα 1234, έχει "1234 άνοιξε η εξώπορτα".

4) Συγκρίνει τα previous.txt και latest.txt (τα οποία πάντα έχουν μόνο μία γραμμή μέσα σε στυλ "1234 άνοιξε η εξώπορτα"

4) Αν είναι διαφορετικά, στέλνει με email το latest.txt.

<?php
cp /etc/asterisk/alarm/latest.txt /etc/asterisk/alarm/previous.txt;
cd /tmp;
cp `ls -t1 | head -1` /etc/asterisk/alarm/latest.txt;
php /etc/asterisk/alarm/alarmparse.php;
$filelatest = '/etc/asterisk/alarm/latest.txt';
$contentslatest = file_get_contents($filelatest);
$fileprevious = '/etc/asterisk/alarm/previous.txt';
$contentsprevious = file_get_contents($fileprevious);
if ( $contentslatest != $contentsprevious ) {
     mail -s "Synagermos Spitiou" [email protected] -- -f [email protected] </etc/asterisk/alarm/latest.txt;
}
?>

Μπορείτε να μου πείτε που κάνω λάθος και πως να το διορθώσω;

Δημοσ.

Ποιος σχεδίασε αυτόν τον τρόπο λειτουργίας, εσύ ή έτσι λειτουργεί by default το σύστημα; (απλά ρωτάω...)

Είναι λίγο παράξενη η προσέγγισή σου με τα αρχεία, θα ήταν πολύ ευκολότερο αν τα αποθήκευες σε μια βάση δεδομένων και διαχειριζόσουν τα δεδομένα από κει. 

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

Δημοσ.

Γεια σας,

 

Έχω έναν συναγερμό τον οποίο έχω συνδέσει με το τηλεφωνικό μου κέντρο το οποίο βασίζεται σε linux. Ο συναγερμός αναφέρει τα γεγονότα (π.χ. όταν αρχίζει να χτυπάει) με τη μορφή ενός κωδικού. Για παράδειγμα, 1234 μπορεί να σημαίνει ότι χτυπάει ο συναγερμός λόγω του ότι άνοιξε η εξώπορτα. Το τηλεφωνικό κέντρο αφού λάβει τον κωδικό, τον αποθηκεύει σε ένα καινούργιο txt με ονομασία event-xxxxx (όπου xxxxx ένας τυχαίος αριθμός) και στη συνέχεια εκτελεί ένα alarm.php το οποίο:

 

1) Βρίσκει το τελευταίο event-xxxxx που δημιουργήθηκε (συνεπώς το τελευταίο γεγονός που ανέφερε ο συναγερμός)

2) το αντιγράφει σε ένα txt που λέγεται latest.txt

3) Καλεί ένα άλλο alarmparse.php το οποίο ανοίγει το latest.txt, αφαιρεί κάποιες γραμμές που δεν χρειάζονται και μετατρέπει τους κωδικούς σε κείμενο, για παράδειγμα αντί το latest.txt να έχει μέσα 1234, έχει "1234 άνοιξε η εξώπορτα".

4) Στέλνει με email το latest.txt το οποίο πλέον έχει κείμενο με το τι ανέφερε ο συναγερμός.

<?php
cd /tmp;
cp `ls -t1 | head -1` /etc/asterisk/alarm/latest.txt;
php /etc/asterisk/alarm/alarmparse.php;
mail -s "Synagermos Spitiou" [email protected]  -- -f [email protected] </etc/asterisk/alarm/latest.txt;
?>

Το πρόβλημα μου είναι ότι ο συναγερμός αναφέρει το ίδιο γεγονός 2-3 φορές, οπότε λαμβάνω το ίδιο email πολλές φορές. Θέλω λοιπόν να μου στέλνει email to σκριπτάκι μόνο εάν το τελευταίο γεγονός είναι διαφορετικό από το προηγούμενο. Δυστυχώς παρά τις προσπάθειες μου (δεν έχω ιδέα απο php) δεν το έχω καταφέρει να δουλέψει. Αυτή είναι η σκέψη μου.

 

Το σκριπτακι:

 

1) Αντιγράφει το latest.txt σε ένα αρχείο που ονομάζεται previous.txt, ώστε να έχουμε αποθηκευμένο τί γεγονός ανέφερε την προηγούμενη φορά ο συναγερμός

1) Βρίσκει το τελευταίο event-xxxxx που δημιουργήθηκε (συνεπώς το τελευταίο γεγονός που ανέφερε ο συναγερμός)

2) το αντιγράφει στο latest.txt

3) Καλεί ένα άλλο alarmparse.php το οποίο ανοίγει το latest.txt, αφαιρεί κάποιες γραμμές που δεν χρειάζονται και μετατρέπει τους κωδικούς σε κείμενο, για παράδειγμα αντί το latest.txt να έχει μέσα 1234, έχει "1234 άνοιξε η εξώπορτα".

4) Συγκρίνει τα previous.txt και latest.txt (τα οποία πάντα έχουν μόνο μία γραμμή μέσα σε στυλ "1234 άνοιξε η εξώπορτα"

4) Αν είναι διαφορετικά, στέλνει με email το latest.txt.

<?php
cp /etc/asterisk/alarm/latest.txt /etc/asterisk/alarm/previous.txt;
cd /tmp;
cp `ls -t1 | head -1` /etc/asterisk/alarm/latest.txt;
php /etc/asterisk/alarm/alarmparse.php;
$filelatest = '/etc/asterisk/alarm/latest.txt';
$contentslatest = file_get_contents($filelatest);
$fileprevious = '/etc/asterisk/alarm/previous.txt';
$contentsprevious = file_get_contents($fileprevious);
if ( $contentslatest != $contentsprevious ) {
     mail -s "Synagermos Spitiou" [email protected] -- -f [email protected] </etc/asterisk/alarm/latest.txt;
}
?>

Μπορείτε να μου πείτε που κάνω λάθος και πως να το διορθώσω;

Αμα στην τελικη θελεις δε και καλα να δουλεψεις σωζοντας τα δεδομενα σε αρχειο τοτε χρησιμοποιησεις Json η xml format, ωστε να μπορεις να επεξεργαζεσαι τα δεδομενα πιο ευκολα. 

Δημοσ.

Δεν το έχω σχεδιάσει εγώ το σύστημα, είναι έτσι by default. Εγώ απλά έκανα τις αλλαγές στο 1ο μπλοκ κώδικα που βλέπετε και έφτιαξα το 2ο μπλοκ.

Σίγουρα το να υπάρχουν σε μία βάση δεδομένων θα ήταν χρήσιμο από άποψη ιστορικού κ.λπ. αλλά αυτή την στιγμή ούτε μου χρειάζεται η λειτουργία αυτή, ούτε και γνωρίζω πως να την υλοποιήσω, οπότε ψάχνω για την πιο απλή προσέγγιση ώστε να μην παίρνω 3 email κάθε φορά που αναφέρει κάποιο γεγονός ο συναγερμός.

Να ξαναπώ ότι δεν έχω σχέση με προγραμματισμό (πέραν του προγραμματισμού που κάναμε στη 3η λυκείου  :-D ). Ακόμα και τις αλλαγές που έκανα στο scriptακι τις έκανα ψάχνοντας, οπότε μπορεί να είναι και τελείως λάθος,

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...