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

Εκτέλεση εφαρμογής μετά από την σύνδεση στο Internet.


firewalker

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

Υπάρχει τρόπος να γίνει η εκτέλεση μίας εφαρμογής αυτόματα μόλις ολοκληρωθεί με επιτυχία η σύνδεση στο Internet μέσω Dial Up; Υπάρχει κάποια εφαρμογή στο KDE που να ελέγχει τον pppd και να κάνει αυτό που θέλω; 'Η αν υπάρχει τρόπος να γίνει μέσω του kppp. Το έψαξα λίγο αλλά ...

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

Υπάρχει ο ίδιος ο pppd :)

 

Pppd invokes the following scripts, if they exist. It is not an error if they don't exist.

 

/etc/ppp/auth-up

A program or script which is executed after the remote system successfully authenticates itself. It is executed with the

parameters

 

interface-name peer-name user-name tty-device speed

 

Note that this script is not executed if the peer doesn't authenticate itself, for example when the noauth option is used.

 

/etc/ppp/auth-down

A program or script which is executed when the link goes down, if /etc/ppp/auth-up was previously executed. It is executed in

the same manner with the same parameters as /etc/ppp/auth-up.

 

/etc/ppp/ip-pre-up

A program or script which is executed just before the ppp network interface is brought up. It is executed with the same

parameters as the ip-up script (below). At this point the interface exists and has IP addresses assigned but is still down.

This can be used to add firewall rules before any IP traffic can pass through the interface. Pppd will wait for this script

to finish before bringing the interface up, so this script should run quickly.

 

/etc/ppp/ip-up

A program or script which is executed when the link is available for sending and receiving IP packets (that is, IPCP has come

up). It is executed with the parameters

 

interface-name tty-device speed local-IP-address remote-IP-address ipparam

 

/etc/ppp/ip-down

A program or script which is executed when the link is no longer available for sending and receiving IP packets. This script

can be used for undoing the effects of the /etc/ppp/ip-up and /etc/ppp/ip-pre-up scripts. It is invoked in the same manner

and with the same parameters as the ip-up script.

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

Υπάρχει ο ίδιος ο pppd :)

 

Σε ευχαριστώ πολύ. Χρησιμοποιώ την επιλογή noauth. Έτσι έβαλα το πρόγραμμα που ήθελα στο ip-up αλλά δυστυχώς δεν εκτελείτε. Πρέπει να κάνω κάτι διαφορετικό από ότι σε άλλα scrips;

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

Quick and dirty (μπακάλικο ελληνιστί). Φτιάξε ένα script που θα τρέχει το pppd με τα parameters που θέλεις και στην από κάτω γραμμή βάλε το πρόγραμμα που θέλεις να εκτελείται αμέσως μετά. Μετά χρησιμοποίησε αυτό το script για να κάνεις dial.

 

>
#!/bin/sh

pppd <arguments>
/path/to/app/here

 

Κάπως έτσι.

 

PS. Και να μην ξεχάσω. chmod +x script_name μετά για να γίνει executable.

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

Quick and dirty (μπακάλικο ελληνιστί). Φτιάξε ένα script που θα τρέχει το pppd με τα parameters που θέλεις και στην από κάτω γραμμή βάλε το πρόγραμμα που θέλεις να εκτελείται αμέσως μετά. Μετά χρησιμοποίησε αυτό το script για να κάνεις dial.

 

Χρειάζομαι το kppp.

 

Λοιπόν. Έβαλα στο ip-up την εντολή ls > /tmp/ls και την εκτέλεσε κανονικά. Το πρόβλημα είναι ότι όταν βάλεις να εκτελέσεις μία εντολή που θέλει πρόσβαση στον Χ ή κάποιο script που καλεί εντολή που θέλει πρόσβαση στον Χ. Ίσως το πρόβλημα να δημιουργείται επειδή οι εντολές του ip-up εκτελούνται σαν από super user. Υπάρχει τρόπος να του πω να εκτελεί μία εντολή για άλλον χρήστη; Αν ήθελα να τρέξω μία εντολή από κονσόλα του su αλλά για λογαριασμό άλλου χρήστη γίνεται;

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

Σε αυτήν την περίπτωση μπορείς να χρησιμοποιήσεις το sudo και να το κάνεις configure έτσι ώστε για την συγκεκριμένη εντολή να μην σου ζητάει password για τον χρήστη σου.

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

Του έβαλα su -l -p όνομα_χρήστη -c εντολή αλλά τίποτε. Αν δώσω /etc/ppp/ip-up όλα καλά. Αν την δώσω από κονσόλα του root εκτελεί την εφαρμογή κανονικά για τον χρήστη που θέλω και χωρίς να ζητά password. Δεν μπορώ να καταλάβω τι φταίει. :( :( :( Σε εσάς τι ισχύει;

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

Ίσως το πρόβλημα να δημιουργείται επειδή οι εντολές του ip-up εκτελούνται σαν από super user.

Ναι, όπως αναφέρει η man page:

 

 

The scripts are executed as root (with the real and effective user-id set to 0), so that they can do things such as update routing tables or run privileged daemons.

[...]

Pppd runs the scripts with standard input, output and error redirected to /dev/null, and with an environment that is empty except for some environment variables that give information about the link.

 

Αυτό που θέλεις να εκτελέσεις τι είναι; Μήπως απαιτεί κάτι παραπάνω από ένα άδειο περιβάλλον; Αν είναι γραφική εφαρμογή σίγουρα θα χρειαστεί να ορίσεις τουλάχιστον την $DISPLAY. Επίσης χρησιμοποίησε πλήρες path για οτιδήποτε είναι να εκτελέσεις (ακόμη και για την su), αφού στο περιβάλλον που εκτελείται το script δεν υπάρχει ούτε η $PATH.

 

Αν υπάρχει πρόβλημα με τα privileges, δοκίμασε και το εξής option:

welcome script

Run the executable or shell command specified by script before initiating PPP negotiation, after the connect script (if any) has completed. A value for this option from a privileged source cannot be overridden by a non-privileged user.

 

Αν το περάσεις στο ~/.ppprc του user σου λογικά θα εκτελεστεί με τα ίδια permissions του user.

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

δοκίμασα μέσα στο ip-up να βάλω και τα

 

PATH=/sbin:/usr/sbin:/bin:/usr/bin

export PATH

 

καθώς και το fuul path της εφαρμογής.

 

Θέλω να τρέχω το checkgmail που νομίζω είμαι σε perl. Διότι αν ξεκινήσει πριν από την ολοκλήρωση της σύνδεσης κολλάει. Και συνεχώς ξεχνάω να το ξεκινάω και κατά συνέπεια ξεχνάω να πάρω και τα mail μου.

 

Το ~/.ppprc δεν υπάρχει να το δημιουργήσω; Τι να βάλω μέσα;

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

Το ~/.ppprc δεν υπάρχει να το δημιουργήσω; Τι να βάλω μέσα;

Μπορείς να βάλεις σχεδόν ό,τι θα έβαζες στο /etc/ppp/options, απλά είναι user-specific. Η welcome παίρνει για παράμετρο τη διαδρομή προς μια εφαρμογή που θα εκτελεστεί, αλλά πριν ολοκληρωθεί η σύνδεση, οπότε δε θα σου κάνει λογικά (εκτός και αν μεσολαβήσεις κάποιο script που θα κάνει sleep για κάποια δευτερόλεπτα και μετά θα εκτελεί αυτό που θέλεις, αλλά και αυτό δεν είναι σωστό -το σωστό είναι να χρησιμοποιήσεις τo ip-up).

 

Το checkgmail είναι γραφική εφαρμογή από ότι βλέπω, οπότε το απολύτως ελάχιστο να περιμένει να υπάρχει και $DISPLAY ορισμένη.

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

Το checkgmail είναι γραφική εφαρμογή από ότι βλέπω, οπότε το απολύτως ελάχιστο να περιμένει να υπάρχει και $DISPLAY ορισμένη.

 

Σε ευχαριστώ πάρα πολύ. Λοιπόν έβαλα τα εξής και όλα εντάξει.

 

>
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

export DISPLAY=:0.0

/bin/su -l -p firewalker -c /usr/bin/checkgmail

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

Λοιπόν το ομόρφυνα λίγο. Έφτιαξα ένα άλλο script, το checkgmail.rc και μέσα έβαλα τα εξής:

 

>
#!/bin/bash

PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

export DISPLAY=:0.0

PID=`pidof -s -x -o %PPID /usr/bin/checkgmail`

if [ "$PID" = "" ]; then
       /bin/su -l -p firewalker -c /usr/bin/checkgmail
fi

 

Αποτρέπω και το να τρέχουν πάνω από ένα instances του προγράμματος.

 

Στο /etc/ppp/ip-up έβαλα μόνο το path του checkgmal.rc

 

>
#!/bin/sh
#
# This script is run by pppd when there's a successful ppp connection.
#

/bin/checkgmail.rc

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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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