Mercurial > mercurial > hgweb_golang.cgi
comparison src/magicpacket.go @ 40:c6df3bae683e
magicpacket.go: add port option.
author | pyon@macmini |
---|---|
date | Thu, 06 Feb 2020 20:19:20 +0900 |
parents | 523416ca4b83 |
children |
comparison
equal
deleted
inserted
replaced
39:523416ca4b83 | 40:c6df3bae683e |
---|---|
1 package main | 1 package main |
2 | 2 |
3 import ( | 3 import ( |
4 "bytes" | 4 "bytes" |
5 "fmt" | 5 "flag" |
6 "net" | 6 "fmt" |
7 "log" | 7 "net" |
8 "os" | 8 "log" |
9 "os" | |
9 ) | 10 ) |
10 | 11 |
11 func main() { | 12 func main() { |
12 if len(os.Args) < 2 { | 13 var port int |
13 fmt.Fprintln(os.Stderr, "magicpacket mac-address1 mac-address2 ...") | 14 flag.IntVar(&port, "p", 9, "port") |
14 os.Exit(1) | 15 flag.Parse() |
15 } | |
16 for _, mac := range os.Args[1:] { | |
17 hw, err := net.ParseMAC(mac) | |
18 if err != nil { | |
19 log.Fatal(err) | |
20 } | |
21 | 16 |
22 b := [][]byte{bytes.Repeat([]byte{255}, 6), bytes.Repeat([]byte(hw), 16)} | 17 if flag.NArg() < 1 { |
23 pkt := bytes.Join(b, nil) | 18 fmt.Fprintln(os.Stderr, "magicpacket mac-address1 mac-address2 ...") |
19 fmt.Fprintln(os.Stderr, "magicpacket port mac-address1 mac-address2 ...") | |
20 os.Exit(1) | |
21 } | |
24 | 22 |
25 conn, err := net.Dial("udp", "255.255.255.255:9") | 23 addr := fmt.Sprintf("255.255.255.255:%d", port) |
26 if err != nil { | |
27 log.Fatal(err) | |
28 } | |
29 defer conn.Close() | |
30 | 24 |
31 conn.Write(pkt) | 25 for _, mac := range flag.Args() { |
32 } | 26 hw, err := net.ParseMAC(mac) |
27 if err != nil { | |
28 log.Fatal(err) | |
29 } | |
30 b := [][]byte{bytes.Repeat([]byte{255}, 6), bytes.Repeat([]byte(hw), 16)} | |
31 pkt := bytes.Join(b, nil) | |
32 conn, err := net.Dial("udp", addr) | |
33 if err != nil { | |
34 log.Fatal(err) | |
35 } | |
36 defer conn.Close() | |
37 conn.Write(pkt) | |
38 } | |
33 } | 39 } |
34 | 40 |