start /perm/sh if it exists upon any byte on the serial console
This allows debugging when the network is down.
This commit is contained in:
parent
4af394b99e
commit
107f6fe098
27
gokrazy.go
27
gokrazy.go
@ -8,7 +8,6 @@
|
|||||||
package gokrazy
|
package gokrazy
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
@ -182,14 +181,26 @@ func Supervise(commands []*exec.Cmd) error {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
scanner := bufio.NewScanner(os.Stdin)
|
buf := make([]byte, 1)
|
||||||
for scanner.Scan() {
|
for {
|
||||||
if err := updateListeners("80"); err != nil {
|
if _, err := os.Stdin.Read(buf); err != nil {
|
||||||
log.Printf("updating listeners: %v", err)
|
log.Printf("read(stdin): %v", err)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := os.Stat("/perm/sh"); err == nil {
|
||||||
|
sh := exec.Command("/perm/sh")
|
||||||
|
sh.Stdin = os.Stdin
|
||||||
|
sh.Stdout = os.Stdout
|
||||||
|
sh.Stderr = os.Stderr
|
||||||
|
if err := sh.Run(); err != nil {
|
||||||
|
log.Printf("sh: %v", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := updateListeners("80"); err != nil {
|
||||||
|
log.Printf("updating listeners: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if err := scanner.Err(); err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user