33
|
1 package main
|
|
2
|
|
3 import (
|
|
4 "bytes"
|
|
5 "fmt"
|
|
6 "net"
|
|
7 "log"
|
|
8 "os"
|
|
9 )
|
|
10
|
|
11 func main() {
|
|
12 if len(os.Args) < 2 {
|
39
|
13 fmt.Fprintln(os.Stderr, "magicpacket mac-address1 mac-address2 ...")
|
33
|
14 os.Exit(1)
|
|
15 }
|
39
|
16 for _, mac := range os.Args[1:] {
|
|
17 hw, err := net.ParseMAC(mac)
|
33
|
18 if err != nil {
|
|
19 log.Fatal(err)
|
|
20 }
|
|
21
|
|
22 b := [][]byte{bytes.Repeat([]byte{255}, 6), bytes.Repeat([]byte(hw), 16)}
|
|
23 pkt := bytes.Join(b, nil)
|
|
24
|
|
25 conn, err := net.Dial("udp", "255.255.255.255:9")
|
|
26 if err != nil {
|
|
27 log.Fatal(err)
|
|
28 }
|
|
29 defer conn.Close()
|
|
30
|
|
31 conn.Write(pkt)
|
|
32 }
|
|
33 }
|
|
34
|