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