WOL-Funktion

Wünsche, Anträge, Fehlermeldungen
Wox
Interessierter
Interessierter
Beiträge: 21
Registriert: Freitag 19. Juli 2002, 09:58

WOL-Funktion

Beitrag von Wox »

Hallo

Es gibt ja bei Linux die super Videorecorderfunktion mit Streamingserver. Wie wärs wenn man da ca 5 Minuten vor Aufnahmebeginn ein Wak on Lan singnal an den Server senden könnte? Ich glaube es gibt viele User die den PC nicht immer laufen haben, und wenn der sich dann automatisch einschaltet?

Gruß

Wox
happydude
Einsteiger
Einsteiger
Beiträge: 262
Registriert: Samstag 1. Dezember 2001, 00:00

Re: WOL-Funktion

Beitrag von happydude »

Wox hat geschrieben: Es gibt ja bei Linux die super Videorecorderfunktion mit Streamingserver. Wie wärs wenn man da ca 5 Minuten vor Aufnahmebeginn ein Wak on Lan singnal an den Server senden könnte? Ich glaube es gibt viele User die den PC nicht immer laufen haben, und wenn der sich dann automatisch einschaltet?
Ich habe schon einen Kommandozeilen WOL-Client für die Box im Router-Image. Damit werfe ich täglich meinen Rechner über die Fernbedienung an. Man bückt sich ja ungern :-)

Technisch also kein Problem. Wenn das jemand in den Streamserver einbinden möchte, möge man mich ansprechen.
happydude
Einsteiger
Einsteiger
Beiträge: 262
Registriert: Samstag 1. Dezember 2001, 00:00

Wake on LAN (und Satfind) plugins

Beitrag von happydude »

Nachdem ich schon drauf angesprochen wurde, aber ich mal zwei Plugins gemacht für WOL und Satfind. Getestet aber nur unter Neutrino

WOL:

Code: Alles auswählen

#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <sys/wait.h>
#include <plugin.h>

#define CONFIGFILE "/var/etc/ether-wake.conf"
#define ETHERWAKEBINARY "/bin/ether-wake"

void plugin_exec(PluginParam *par)
{
        int macAddress[6];
        char shellCommand[128];
        char macAddressString[19];
        FILE* fh;

        if ((fh = fopen(CONFIGFILE, "r")))
        {
                if (fscanf(fh, "%2x:%2x:%2x:%2x:%2x:%2x", macAddress, macAddress+1, macAddress+2, macAddress+3, macAddress+4, macAddress+5) != 6)
                {
                        printf("Fehler in %s\n", CONFIGFILE);
                        fclose(fh);
                        return;
                }
                fclose(fh);
                strcpy(shellCommand, ETHERWAKEBINARY);
                sprintf(macAddressString, " %02x:%02x:%02x:%02x:%02x:%02x", macAddress[0], macAddress[1], macAddress[2], macAddress[3], macAddress[4], macAddress[5]);
                strcat(shellCommand, macAddressString);
                system (shellCommand);
        }
        else
        {
                printf("%s konnte nicht geoeffnet werden\n", CONFIGFILE);
        }
}
Satfind:

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <sys/wait.h>
#include <plugin.h>

#define PIDFILE "/var/run/satfind.pid"

void plugin_exec(PluginParam *par)
{
        int satfind_pid;
        FILE* fh;

        if ((fh = fopen(PIDFILE, "r")))
        {
                if (fscanf(fh, "%d", &satfind_pid) != 1)
                {
                        printf("Satfind konnte nicht gestoppt werden\n");
                        fclose(fh);
                        return;
                }
                kill(satfind_pid, SIGTERM);
                waitpid(satfind_pid, 0, 0);
                fclose(fh);
                unlink(PIDFILE);
                return;
        }

        switch (satfind_pid = fork())
        {
                case -1:
                        perror("[satfind] can et fork");
                        return;

                case 0:
                        if (execlp( "/bin/satfind","satfind", NULL) < 0)
                        {
                                printf("Satfind konnte nicht gestartet werden\n");
                        }
                        return;

                default:
                        break;
        }

        if ((fh = fopen(PIDFILE, "w")))
        {
                fprintf(fh, "%d", satfind_pid);
                fclose(fh);
        }
        else
        {
                kill(satfind_pid, SIGTERM);
                waitpid(satfind_pid, 0, 0);
                printf("Satfind konnte nicht gestartet werden\n");
        }
}
compilieren tue ich das einfach mit

libtool --mode=compile powerpc-tuxbox-linux-gnu-gcc -O2 -Wall -I/home/fbn/tuxbox-cvs/apps/include -mcpu=823 -c -o plugin.lo plugin.c
powerpc-tuxbox-linux-gnu-gcc -shared -Wall plugin.lo -o plugin.so
powerpc-tuxbox-linux-gnu-strip plugin.so

für ein richtiges Makefile war ich noch zu faul.

Die cfg Datei sieht dann einfach so aus:

type=2
name=Beschreibung