@@ -15,6 +15,11 @@ import (
15
15
"github.com/spf13/cobra"
16
16
)
17
17
18
+ const (
19
+ fnNetTCP = "/proc/net/tcp"
20
+ fnNetTCP6 = "/proc/net/tcp6"
21
+ )
22
+
18
23
var awaitPortCmd = & cobra.Command {
19
24
Use : "await <port>" ,
20
25
Short : "Waits for a process to listen on a port" ,
@@ -31,26 +36,29 @@ var awaitPortCmd = &cobra.Command{
31
36
log .Fatal ("cannot compile regexp pattern" )
32
37
}
33
38
34
- fmt .Printf ("Awaiting port %d... " , port )
35
- for {
36
- tcp , err := os .ReadFile ("/proc/net/tcp" )
37
- if err != nil {
38
- log .Fatalf ("cannot read /proc/net/tcp: %s" , err )
39
+ var protos []string
40
+ for _ , path := range []string {fnNetTCP , fnNetTCP6 } {
41
+ if _ , err := os .Stat (path ); err == nil {
42
+ protos = append (protos , path )
39
43
}
44
+ }
40
45
41
- tcp6 , err := os .ReadFile ("/proc/net/tcp6" )
42
- if err != nil {
43
- log .Fatalf ("cannot read /proc/net/tcp6: %s" , err )
44
- }
46
+ fmt .Printf ("Awaiting port %d... " , port )
47
+ for {
48
+ for _ , proto := range protos {
49
+ tcp , err := os .ReadFile (proto )
50
+ if err != nil {
51
+ log .Fatalf ("cannot read %v: %s" , proto , err )
52
+ }
45
53
46
- if pattern .MatchString (string (tcp )) || pattern .MatchString (string (tcp6 )) {
47
- break
54
+ if pattern .MatchString (string (tcp )) {
55
+ fmt .Println ("ok" )
56
+ return
57
+ }
48
58
}
49
59
50
60
time .Sleep (2 * time .Second )
51
61
}
52
-
53
- fmt .Println ("ok" )
54
62
},
55
63
}
56
64
0 commit comments