Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Skript für kdialog in dialog umwandeln

  1. #1
    bonwit
    Registriert seit
    Jan 2007
    Beiträge
    96

    Skript für kdialog in dialog umwandeln

    Wie kann ich dieses Skript so umwandeln, dass es auch für Debian nutzbar ist?
    Code:
    #!/usr/bin/perl -w
    #
    # read_calls.pl
    # 
    # Synopsis:
    # Script is run as a service daemon. It connects to the Fritz!Box Fon Ata
    # (port 1012) and receives the calling string (number of the party calling 
    # in). This number is passed on to another program. I.e. this could be an 
    # Jabber client or a "look who called list".
    # 
    # Requirements:
    # - must be able to reach tcp port 1012 on your FB
    # - activate call monitor on FB by dialing #96*5*
    # - required perl package
    #
    # Licence: GPL2
    #
    # History:
    # ver. 0.1 - 20060401 - Lars G. Sander, Zuerich
    # First public release.
    # ver. 0.2 - 20060510 - Ulrich Dangel <fritzbox@spamt.net>
    # Added telefon book support
    # ver. 0.3 - 20060624 - Udo Rathje udo@familie-rathje.de
    # Switched to kdialog passive Popups
    # Added outgoing calls 
    # Added Reverse lookup
    # ver. 0.4 - 20061010 - Udo Rathje udo@familie-rathje.de
    # changed lookup
    # To Do:
    # - beefed up security?
    # - proxy functionality
    # 
    use IO::Socket;
    use strict;
    
    # your fritz box (ip or hostname)
    my $FRITZBOX="fritz.box";             # address of box
    my $TELEFONBUCH="$ENV{HOME}/doc/addressbook";    # path to local adressbook
    my $EXTPRO="/usr/bin/kdialog";            # path to kdialog
    my $DISPLAYTIME="30";                # Display time of Popups
    my $DOLOOKUPS="true";                # Reverse lookups of incoming calls (only germany, lookuptel required)
    #-------- NO USER SERVICABLE PARTS BELOW -------#
    
    sub reverse_lookup {
        my $number = shift;
        system("wget -q --tries=3 --timeout=5 -O /tmp/reverse_lookup \"http://www1.dasoertliche.de/?form_name=search_inv&ph=$number\"");
        my $nameadr = `grep -e 'class=\"entry\".*' -e ';.*<br\/>' /tmp/reverse_lookup`;
        if (index($nameadr, "<a href") != -1) {
            #Name
            $nameadr =~ s/^.*\"entry\">//g;
            $nameadr =~ s/<\/a>.*/, /g;
            #Adresse
            $nameadr =~ s/\n//g;
            $nameadr =~ s/\&nbsp\;/\ /g;
            $nameadr =~ s/\t//g;
            $nameadr =~ s/\<br.*//g;
            return("$nameadr");
            }
            return("");
        }
    
    sub read_book {
        my %book = ();
        open(IN, "<", $TELEFONBUCH) || return ();
        while(<IN>){
            chomp;
            my @elements = split(":",$_);
            $book{$elements[0]}=$elements[1];
        }
        close(IN);
        return %book;
    }
    my %book = &read_book;
    my @status;
    my $frombook="false";
    my $sock = new IO::Socket::INET (
            PeerAddr => $FRITZBOX,
            PeerPort => '1012',
            Proto => 'tcp'
            );
            die "Could not create socket: $!\n" unless $sock;
        
    while(<$sock>) 
    {
            if ($_ =~ /RING/){
                    my @C = split(/;/);
                    my $nr="";
                    if (exists($book{$C[3]})) 
            {
                        $nr=$book{$C[3]};
                $frombook="true";
                    } 
            else 
            {
                        $nr=$C[3];
                $frombook="false";
                    }
                    my @args=("$EXTPRO --title \"Eingehender Anruf:\" --passivepopup \"von $nr\n(MSN: $C[4], Leitung: $C[5])\" $DISPLAYTIME &");
            $status[$C[2]]="Anruf von $nr\n(MSN: $C[4], Leitung: $C[5])";
                system(@args);
            if (($frombook eq "false") and ($nr ne "") and ($DOLOOKUPS eq "true"))
            {
                
                my $name=reverse_lookup($nr);
                chomp($name);
                if (length($name)>10)
                {
                    $status[$C[2]]="Anruf von $nr\n(MSN: $C[4], Leitung: $C[5])\n Identifiziert als:\n$name";
                    @args=("$EXTPRO --title \"Eingehender Anruf:\" --passivepopup \"von $nr\n(MSN: $C[4], Leitung: $C[5])\nIdentifiziert als:\n$name \" $DISPLAYTIME &");
                    system(@args);
                    print "$name \n";
                }
                            
            }
        }
        if ($_ =~ /CALL/)
        {
            my @C = split(/;/);
            chomp(@C);
            my $nr="";
            if (exists($book{$C[5]})) 
            {
                $nr=$book{$C[5]};
            } 
            else 
            {
                $nr=$C[5];
            }
            my @args=("$EXTPRO --title \"Ausgehendes Gespäch:\" --passivepopup \"an $nr von Nebenstelle $C[3]\n(MSN: $C[4], Leitung: $C[6])\" $DISPLAYTIME &");
            $status[$C[2]]="Gespräch zu $nr\n(MSN: $C[4], Leitung: $C[6])";
            system(@args);
            
        }
        if ($_ =~ /DISCONNECT/)
        {
            my @C = split(/;/);
            if ($status[$C[2]] ne "")
        
            {
                my @args=("$EXTPRO --title \"Verbindung beendet ($C[3] Sekunden):\" --passivepopup \"$status[$C[2]]\" $DISPLAYTIME &");
                system(@args);
            }
            $status[$C[2]]="";
            
        }
    }
    Geändert von bonwit (25.06.07 um 16:51 Uhr)
    Germany
    Debian GNU/Linux
    Emacs
    fvwm2

  2. #2
    patch-aholic Avatar von 3qualizer
    Registriert seit
    Jul 2000
    Ort
    Stuttgart
    Beiträge
    1.673
    Was lässt dich denn denken das es das nicht tut? Kommt eine Fehlermeldung, funktioniert etwas nicht?
    Eurebia - der UO Freeshard (www.eurebia.net) :)

  3. #3
    bonwit
    Registriert seit
    Jan 2007
    Beiträge
    96
    Die /usr/bin/kdialog gibts in Debian nicht (das Paket ist schließlich nicht installiert). Und kdialog ist bei Synaptic auch nicht vorhanden.
    Germany
    Debian GNU/Linux
    Emacs
    fvwm2

  4. #4
    patch-aholic Avatar von 3qualizer
    Registriert seit
    Jul 2000
    Ort
    Stuttgart
    Beiträge
    1.673
    Soweit ich weiss gibts in Debian eine Möglichkeit zu suchen in welchem Paket die Datei steckt. Anscheinend (unter anderem?) in kdebase-bin
    Eurebia - der UO Freeshard (www.eurebia.net) :)

  5. #5
    bonwit
    Registriert seit
    Jan 2007
    Beiträge
    96
    Scheint zu funktionieren. Wenn jemand anruft, gibt der zwar nen Haufen Fehlermeldungen raus, aber das Popup kommt trotzdem.
    Germany
    Debian GNU/Linux
    Emacs
    fvwm2

  6. #6
    Bastard User From Hell Avatar von kreol
    Registriert seit
    Oct 2004
    Beiträge
    7.971
    Falls Du unter Debian Gnome verwendest: Das Äquivalent zu kdialog ist gdialog (Link).
    Such mal danach, installiere es ggf. und ändere die Zuweisung zu $EXTPRO. Dann brauchst Du nicht die ganze kde-base zu installieren.


    Kreol
    Beim posten von Dateien oder Ausgaben bitte [code]Text[/code] verwenden. Nähere Info über vB-Tags gibt es hier

    I just want to know God's thoughts. The rest are details. (A. Einstein)

Ähnliche Themen

  1. Gnome startet nicht (Fedora Core 4)
    Von Stift im Forum Windowmanager
    Antworten: 8
    Letzter Beitrag: 25.06.06, 16:21
  2. [Bitte] Dos-Batch-Skript in Bash-Skript umwandeln
    Von ichunddu im Forum Linux Allgemein
    Antworten: 8
    Letzter Beitrag: 31.07.05, 12:38
  3. Bash Skript soll globale Variable setzen...
    Von ennservogt im Forum Anwendungen Allgemein, Software
    Antworten: 7
    Letzter Beitrag: 06.06.04, 18:56
  4. ISDN Frage --> Script ausführen wenn Internetverbindung steht
    Von markwaldhoff im Forum Anbindung an die Aussenwelt
    Antworten: 20
    Letzter Beitrag: 18.01.04, 18:52
  5. shell skript zum umwandeln von mp3's
    Von jockelb im Forum Anwendungen Allgemein, Software
    Antworten: 4
    Letzter Beitrag: 26.12.02, 11:07

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •