Page 1 of 2

connection keep alive for Linux

Posted: Sat Sep 04, 2004 9:30 pm
by Sreak
Το γνωστό πρόβλημα με τη σύνδεση της σχολής. Με τα XP είχα το connection keep alive απο το norton και έκανα τη δουλειά μου. Τώρα με το linux??? Μια λύση που δουλεύει είναι ότι έχω βάλει να κάνει έλεγχο mail κάθε 1 λεπτό. Καμιά άλλη λύση?

Posted: Sun Sep 05, 2004 12:07 am
by Einherjar
Φτιάξε κανένα prog (σε c-shell) που να κάνει ping κάθε ένα λεπτό κάπου. Πολύ απλό και πολύ ελαφρύ!

Posted: Sun Sep 05, 2004 5:06 am
by HdkiLLeR
Η λύση του Νεκτάριου είναι σίγουρα αποδεκτή αλλά εάν το disconnection γίνεται απο το επίπεδο 2(DLL) τότε μπορείς και χωρίς script. Πιο συγκεκριμένα:

Εάν ο server της σχολής σε αποσυνδέει κοιτάζοντας το επίπεδο 2(DLL - PPP), τότε αυτό που κάνει είναι απλά να κοιτάει το PPP εάν δέχεται frames(LCP/NCP frames) και εάν περάσει ένα χρονικό διάστημα και δεν έχει λάβει κανένα πλαίσιο(ή αριθμό πλαισίων) τότε τρώς disconnect. Σε αυτήν την περίπτωση πειράζεις το PPP σου ώστε να του στέλνει ανά τακτά χρονικά διαστήματα μερικά LCP echo request frames ώστε να διατηρεί το connection alive. Για να το κάνεις αυτό κάνεις edit το /etc/ppp/options(στο Mandrake δεν ξέρω εάν είναι σε αυτό το path) και τοποθετείς μέσα στο αρχείο την γραμμή lcp-echo-interval n. To n είναι κάθε πόσα sec θα στέλενει τα frames αυτά.

Τώρα εάν σε αποσυνδέει κοιτάζοντας στο επίπεδο 3(IP). Τότε το παραπάνω δεν θα δουλέψει μιας και θα περιμένει κάποιο ip datagram να φτάσει(περάσει) απο αυτόν. Σε αυτήν την περίπτωση κάνεις το παραπάνω(ping) το οποίο απλά στέλνει ICMP datagrams(κοινώς πακέτα επιπέδου 3 - οπότε είσαι καλυμένος).

Posted: Sun Sep 05, 2004 1:08 pm
by Einherjar
Πολύ καλό! Δεν το είχα σκεφτεί!
Δοκίμασε πρώτα sreak αν θα δουλέψει η λύση επιπέδου 2, και αν όχι τότε ανέβα ένα επίπεδo :-D
HdkiLLeR wrote:στο Mandrake δεν ξέρω εάν είναι σε αυτό το path
Αυτό είναι

Posted: Sun Sep 05, 2004 3:18 pm
by Sreak
Τελικά δεν δούλεψε σε επίπεδο 2 όμως δούλεψε σε επίπεδο 3 :)

Posted: Sun Sep 05, 2004 4:30 pm
by HdkiLLeR
Για να αυτοματοποιήσεις την διαδικασία γράψε ένα script το οποίο να κάνει ένα ping ανά 1 min, κάντο executable και βάλτο στο /etc/ppp/ip-up.d/(πάλι δεν ξέρω εάν είναι αυτό το path στην Mandrake). Μετά απο κάθε σήκωμα του PPP θα τρέχει το script απο μόνο του οπότε δεν θα χρειάζεται να το τρέχεις με το χέρι :)...Αντίστοιχα μπορείς να προσθέσεις και ένα script τερματισμού του πρώτου στο /etc/ppp/ip-down.d/ ώστε μόλις κλείνεις την σύνδεση να σταματάει(kill -9?) το πρώτο scirpt που κάνει συνέχεια ping.

Posted: Sun Sep 05, 2004 6:15 pm
by Sreak
Οκ όλλα αλλά πως θα βρίσκω στο script το id της διεργασίας για να τη σκοτώσω?Χρειάζεται να κάνω μέσα στο script την εντολή ps, να βρω το όνομα του script και μετά να βρω το πρώτο πεδίο της ίδιας σειράς που είναι το pid της?
Υπάρχει κάποιος τρόπος να δουλεύει κατευθείαν με το όνομα??
Μέχρι στιγμής πάντως όλα δουλεύουν χαρτι :)

Posted: Sun Sep 05, 2004 6:55 pm
by HdkiLLeR
Τς τς τς...

Code: Select all

#!/bin/csh

set name = "script's name"
set pid = `ps aux | grep $name | cut -d" " -f8`

kill -9 $pid


Το script's name αντικατέστησε το με το όνομα του script. Αντίστοιχα μπορείς και με /bin/bash script, awk και perl. Διαλέγεις.

Posted: Sun Sep 05, 2004 10:13 pm
by Sreak
Ξέρεις τι γίνεται, το script δούλευε μια χαρά αν το έτρεχα χειροκίνητα, το εβαλα στο /etc/ppp/ip-up.d και συμβαίνουν τα εξής.
Πριν μπω στο internet και τρέξω ps aux | grep connectionKeepAlive δεν έχω κάποιο αποτέλεσμα(λογικό).
Αν μπω internet και τρέξω ακριβώς το ίδιο βγάζει:
root 3753 ktl ktl με όνομα διεργασίας grep connectionKeepAlive
Στην ουσία δηλαδή δεν τρέχει το script μιας και με πετάει απο το ίντερνετ

Εντάξει δεν είναι και μέγιστο πρόβλημα μιας και δεν είναι τίποτα να το τρέχω και με το χέρι αλλά κουβέντα κάνουμε :)

Posted: Sun Sep 05, 2004 10:35 pm
by Einherjar
Περνώντας αρκετή ώρα για να βγάλω ένα νόημα από το post σου( :-D ) θέλω να σε ρωτήσω:
Πριν μπεις στο inet δεν τρέχει το script με το ping, έτσι?
Αφού μπεις, τρέχει το script με το ping, αφού σου βγάζει αποτέλεσμα το

Code: Select all

ps aux | grep $name | cut -d" " -f8
έτσι?

Ποιο script δεν τρέχει, όταν είσαι συνδεδεμένος?

Posted: Mon Sep 06, 2004 12:26 am
by Sreak
Einherjar wrote:Περνώντας αρκετή ώρα για να βγάλω ένα νόημα από το post σου(

Αν τα κάναμε όλα εύκολα, τί θα είχε αξία? :roll:

Λοιπόν πριν μπω στο ιντερνετ δεν έχω τρέξει κανένα script και πράγματι αυτό φαίνεται και από το αποτέλεσμα της εντόλης: ps aux | grep connectionKeepAlive
που είναι κενό.
Όταν μπω στο ίντερνετ και εκτελέσω την ίδια εντολή μου βγάζει σαν αποτέλεσμα μια διεργασία που το όνομα της είναι "grep connectionKeepAlive" προσοχή μαζί με το grep
Στην πραγματικότητα δεν λειτουργέι το script μιας και με πετάει από το ίντερνετ μετά από λίγο.
Α ξέχασα να σου πω πως αν μετα κάνω(πριν με πετάξει από το ίντερνετ) "ps aux" δεν βρίσκω κάπου την connectionKeepAlive.

Πράγματι καταλαβαίνω πως γράφω κάπως περίεργα αλλά δεν μπορώ να κάνω κάτι άλλο :cry: βρε λες να έχω πρόβλημα????

Posted: Mon Sep 06, 2004 1:46 am
by HdkiLLeR
Ναι οκ το έπιασα :). Βασικά δεν τρέχει το script!. Wow και γ**ώ τις διαπιστώσεις έτσι ; Net πως μπαίνεις;

Posted: Sun Sep 12, 2004 2:16 pm
by vagalati
Τώρα σχετικά με το script δεν σου τρέχει γιατί προφανώς μπαίνεις μέσα με το kppp. Το kppp βάζει δικές του παραμέτρους στο ppp και αγνοεί τις ρυθμίσεις που έχεις περάσει εσύ στο ppp. Έχει όμως ένα tab στις ρυθμίσεις που μπορείς να του πείς να εκτελέσει ένα πρόγραμμα μόλις βρεθείς online και ένα άλλο μόλις αποσυνδεθείς. Στο πρώτο βάζεις το scriptάκι σου και στο δεύτερο ένα άλλο script που έχει την εντολή 'killall -9 connectionKeepAlive'

Posted: Sun Sep 12, 2004 2:22 pm
by HdkiLLeR
Slack και killall δεν πάει ρε!! Περίμενα κανένα awk filter απο σένα :) :) :). To βρήκαμε όντως ότι χρησιμοποιεί το kppp... Αχ και είχα ολόκληρο post για το πως θα ρυθμήσεις το pppd.

Posted: Sun Sep 12, 2004 2:45 pm
by vagalati
Αφού υπάρχει η εντολή γιατί να μην την χρησιμοποιήσουμε; :-D

Keep things simple! Η φιλοσοφία του slack είναι 'as simple as possible'
(ΟΚ όταν έχουμε τα κέφια μας κάνουμε και τα παράξενα)

Posted: Sun Sep 12, 2004 9:20 pm
by HdkiLLeR
Ε τώρα τα έχουν κάνει 'as simple as possible' γι' αυτό εδώ και καιρό έχω μετακομήσει στην Debian. Όταν ξεκίνησε ήταν most unix like distro.

Posted: Sun Sep 12, 2004 11:28 pm
by Einherjar
θες να πεις ότι στη Debian το μοτο είναι as hard as possible? :lol: :lol: :lol: :lol:

Posted: Sun Sep 12, 2004 11:37 pm
by HdkiLLeR
όχι ρε είναι SysV based όμως και γουστάρω...:)(η slack ήταν bsd based) . Τηρεί μερικά standarts και τα πάντα είναι στην θέση τους(logs,pids,spool,config,libs,exec...). Για το packaging δεν το συζητάω γιατί απο την debian βγήκε τα υπόλοιπα distros είναι too minimini wanahave a package system like debian.

Posted: Mon Sep 13, 2004 11:35 am
by vagalati
HdkiLLeR wrote:...η slack ήταν bsd based...

Και είναι ακόμα... ;-)

Με το "as simple as possible" δεν εννοώ την ευκολία στον χρήστη. Επίσης ισχύει και στο slack ότι τα πάντα είναι στη θέση τους. :-)

Posted: Mon Sep 13, 2004 1:46 pm
by HdkiLLeR
Έλα τώρα που παραμένει bsd based...ούτε το accounting των processes δεν είναι το ίδιο. Το porting την έχει χαλάσει. Βάλε την 3.6 :) :) :)

Posted: Fri Sep 17, 2004 10:49 pm
by vagalati
Κοίτα, το slack (10) έχει το init ίδιο και το package management ίδιο. Επίσης έχει και bsd process accounting (το οποίο πρέπει να το ενεργοποιήσεις στο /etc/rc.d/rc.M). Η μεγάλη διαφορά με το *BSD είναι ότι έχει πυρήνα... Linux :-D

Y.Γ.1. Την 3.6 την έχεις ακόμα;;;; :shock: Αλήθεια το χρησιμοπιείς καθόλου;;
Y.Γ.2. Θα το δούμε στο OpenBSD ποιός θα νοιώθει πιο... home ;)

Posted: Sat Sep 18, 2004 4:30 am
by HdkiLLeR
vagalati wrote:Υ.Γ.2. Θα το δούμε στο OpenBSD ποιός θα νοιώθει πιο... home ;)


Ας μην σχολιάσω πόση ώρα κάναμε partition έτσι :) :) :)...και τι έφταιγε τελικά :).