view src/magicpacket.go @ 44:b50f2a581cf8

bug fix.
author pyon@macmini
date Tue, 17 Mar 2020 18:29:20 +0900
parents c6df3bae683e
children
line wrap: on
line source

package main

import (
    "bytes"
    "flag"
    "fmt"
    "net"
    "log"
    "os"
)

func main() {
    var port int
    flag.IntVar(&port, "p", 9, "port")
    flag.Parse()

    if flag.NArg() < 1 {
        fmt.Fprintln(os.Stderr, "magicpacket mac-address1 mac-address2 ...")
        fmt.Fprintln(os.Stderr, "magicpacket port mac-address1 mac-address2 ...")
        os.Exit(1)
    }

    addr := fmt.Sprintf("255.255.255.255:%d", port)

    for _, mac := range flag.Args() {
        hw, err := net.ParseMAC(mac)
        if err != nil {
            log.Fatal(err)
        }
        b := [][]byte{bytes.Repeat([]byte{255}, 6), bytes.Repeat([]byte(hw), 16)}
        pkt := bytes.Join(b, nil)
        conn, err := net.Dial("udp", addr)
        if err != nil {
            log.Fatal(err)
        }
        defer conn.Close()
        conn.Write(pkt)
    }
}