42 lines
582 B
Go
42 lines
582 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"github.com/weaveworks/weave/net"
|
|
)
|
|
|
|
func main() {
|
|
if len(os.Args) <= 1 {
|
|
os.Exit(0)
|
|
}
|
|
args := os.Args[1:]
|
|
|
|
if args[0] == "-s" {
|
|
args = args[1:]
|
|
} else {
|
|
usr2 := make(chan os.Signal)
|
|
signal.Notify(usr2, syscall.SIGUSR2)
|
|
<-usr2
|
|
}
|
|
|
|
_, err := net.EnsureInterface("ethwe", -1)
|
|
checkErr(err)
|
|
|
|
binary, err := exec.LookPath(args[0])
|
|
checkErr(err)
|
|
|
|
checkErr(syscall.Exec(binary, args, os.Environ()))
|
|
}
|
|
|
|
func checkErr(err error) {
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(1)
|
|
}
|
|
}
|