[perl] Wake-on-lan scriptje eth1 ipv eth0?

Pagina: 1
Acties:

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
fragment uit het Perl script: (SuSE linux 7.2/apache)
(complete source heb ik ff op http://ews99.d2g.com/dload/wakeup.txt gezet
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sub send_broadcast_packet {
    my ($mac,$ip) = @_;
    if ($mac !~ /^[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}$/i) {
        print "Malformed MAC address $mac\n";
        return;
    }
    # Remove colons
    $mac =~ tr/://d;
    # Magic packet is 6 bytes of FF followed by the MAC address 16 times
    $magic = ("\xff" x 6) . (pack('H12', $mac) x 16);
    # Create socket
    socket(S, PF_INET, SOCK_DGRAM, getprotobyname('udp')) or die "socket: $!\n";
    # Enable broadcast
    setsockopt(S, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt: $!\n";
    # Send the wakeup packet
    if ($opt_d) {
        print "Sending wakeup packet to MAC address $mac";
        print " ($ip)" if (defined($ip));
        print "\n";
    }
    # defined(send(S, $magic, 0, sockaddr_in(0x2fff, inet_aton('255.255.255.255'))))
      defined(send(S, $magic, 0, sockaddr_in(0x2fff, INADDR_BROADCAST)))
        or print "send: $!\n";
    close(S);
}

Alleen het wil niet werken :(
Nu heb ik vroeger toen ik nog FreeSCO had dit script wel werkent gehad. Ik heb zelf het idee dat het aan de wisseling eth0 en eth1 ligt (linux).
nl. Op mijn Freesco was eth0 verbonden met het locale netwerk, en nu is dat eth1 (die andere hangt aan het internet)
Ik weet alleen niet echt veel van Perl :(

Hier had uw advertentie kunnen staan!


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Alleen het wil niet werken
Lekkere duidelijke fout omschrijving, hier heb je een passend antwoord: Ik denk dat als je dat ene zinnetje veranderd het wel zou moeten werken.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
Op vrijdag 28 december 2001 11:45 schreef dusty het volgende:

[..]

Lekkere duidelijke fout omschrijving, hier heb je een passend antwoord: Ik denk dat als je dat ene zinnetje veranderd het wel zou moeten werken.
owkee, het script op zich werkt perfect, alleen wordt het naar mijn idee uitgevoerd op eth0 (eerste netwerkkaart) ipv. eth1 (tweede netwerkkaart)
Dus, het Wakeonlan pakketje beland dus via eth0 op het internet en het zou via eth1 op het lokale netwerk moeten belanden.
Zo duidelijker?

Hier had uw advertentie kunnen staan!


Verwijderd

De sub krijgt als argumenten een MAC adres van een netwerkkaart en een IP adres mee. Als je het verkeerde MAC adres meegeeft zal ook de verkeerde netwerkkaart worden gebruikt, lijkt me ...

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
Op vrijdag 28 december 2001 17:09 schreef MrX het volgende:
De sub krijgt als argumenten een MAC adres van een netwerkkaart en een IP adres mee. Als je het verkeerde MAC adres meegeeft zal ook de verkeerde netwerkkaart worden gebruikt, lijkt me ...
MAC adres is goed, 100% zeker, nl. op een andere linuxbak met 1 netwerkkaart werkt het script perfect. Het probleem zit hem toch echt in de twee NIC's volgens mij. Ip maakt niet zoveel uit, is meer ter verduidelijking
Misschien geeft een tekening duidelijkheid:
code:
1
2
internet <--eth0--Router--eth1-->Switch<--NIC--werkstation met WOL.
WakeOnLan

De router bevat dus een script om het werkstation aan te schakelen. Dit werkt dus niet, omdat volgens mij de magic packet (zo heet dat met WOL) op het internet beland.
code:
1
linuxbak--eth0-->Switch<--NIC--werkstation

Dit gaat perfect, hier bevat de linuxbak het script.
btw, bekijk anders ook de complete source eens, url in de eerste post.
Bvd.

Hier had uw advertentie kunnen staan!


  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
code:
1
2
3
4
5
6
7
8
9
10
    # Create socket
    socket(S, PF_INET, SOCK_DGRAM, getprotobyname('udp')) or die "socket: $!\n";
    # Enable broadcast
    setsockopt(S, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt: $!\n";
    # Send the wakeup packet
    # defined(send(S, $magic, 0, sockaddr_in(0x2fff, inet_aton('255.255.255.255'))))
      defined(send(S, $magic, 0, sockaddr_in(0x2fff, INADDR_BROADCAST)))
        or print "send: $!\n";
    close(S);
}

Weet iemand of hier iets van een interface aangegeven wordt? Ik begrijp van deze code vrij weinig :'(

Hier had uw advertentie kunnen staan!


Verwijderd

als je de parameters nou opzoekt van functie send in een perl manual :) misschien kom je dan verder

ik denk zelf (niks wettend van perl en weinig van netwerken) dat je moet proberen die 0 in een 1 te veranderen :P try it :D

# defined(send(S, $magic, ==> 0, sockaddr_in(0x2fff, inet_aton('255.255.255.255'))))
defined(send(S, $magic, ==> 0, sockaddr_in(0x2fff, INADDR_BROADCAST)))

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
yeah tnx,
Tja, ik weet zelf helemaal nix van perl, ik zal send eens nazoeken, en ff die 0 veranderen in een 1.
Alleen nu ff geen tijd voor, misschien morgen nog :P

Hier had uw advertentie kunnen staan!


  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
net ff getest, die 0 in een 1 veranderen gaat niet :(
Maaruh ik zal google nog eens checken

Hier had uw advertentie kunnen staan!


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Ranzige oplossing horen?

Hang je eth1 aan internet, en je eth0 aan je lan : )

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
Op zaterdag 29 december 2001 22:29 schreef blaataaps het volgende:
Ranzige oplossing horen?

Hang je eth1 aan internet, en je eth0 aan je lan : )
Goh, dat ik daar nou niet eerder op ben gekomen zeg....
Dusss...

Hier had uw advertentie kunnen staan!


Verwijderd

Op zaterdag 29 december 2001 22:29 schreef blaataaps het volgende:
Ranzige oplossing horen?

Hang je eth1 aan internet, en je eth0 aan je lan : )
dat is geen P&W oplossing :D

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
geen perl kenners hier?

Hier had uw advertentie kunnen staan!


  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 14:31
Op maandag 31 december 2001 17:52 schreef hardrocker het volgende:
geen perl kenners hier?
Echt helemaal niemand?

Hier had uw advertentie kunnen staan!


Verwijderd

ik zou niet weten wat dat nou zo erg met perl te maken hep, schrijf er één in PHP zou ik zeggen, daar zitten hier genoeg bobo's van, of kan het nie in PHP :?

  • Grum
  • Registratie: Juni 2001
  • Niet online
het kan niet .. je zal het mbv routing moeten doen (default gateway etc etc)
Pagina: 1