1
1
package subnet
2
2
3
3
import (
4
+ "net"
4
5
"os"
5
6
6
7
command "github.com/esonhugh/k8spider/cmd"
7
8
"github.com/esonhugh/k8spider/define"
8
9
"github.com/esonhugh/k8spider/pkg"
10
+ "github.com/esonhugh/k8spider/pkg/mutli"
9
11
"github.com/esonhugh/k8spider/pkg/scanner"
10
12
log "github.com/sirupsen/logrus"
11
13
"github.com/spf13/cobra"
@@ -28,20 +30,45 @@ var SubNetCmd = &cobra.Command{
28
30
log .Warnf ("ParseStringToIPNet failed: %v" , err )
29
31
return
30
32
}
31
- var records define.Records = scanner .ScanSubnet (ipNets )
32
- if records == nil || len (records ) == 0 {
33
- log .Warnf ("ScanSubnet Found Nothing: %v" , err )
34
- return
35
- }
36
- if command .Opts .OutputFile != "" {
37
- f , err := os .OpenFile (command .Opts .OutputFile , os .O_CREATE | os .O_WRONLY , 0644 )
38
- if err != nil {
39
- log .Warnf ("OpenFile failed: %v" , err )
40
- }
41
- defer f .Close ()
42
- records .Print (log .StandardLogger ().Writer (), f )
33
+ if command .Opts .BatchMode {
34
+ BatchRun (ipNets )
43
35
} else {
44
- records . Print ( log . StandardLogger (). Writer () )
36
+ Run ( ipNets )
45
37
}
46
38
},
47
39
}
40
+
41
+ func Run (net * net.IPNet ) {
42
+ var records define.Records = scanner .ScanSubnet (net )
43
+ if records == nil || len (records ) == 0 {
44
+ log .Warnf ("ScanSubnet Found Nothing" )
45
+ return
46
+ }
47
+ printResult (records )
48
+ }
49
+
50
+ func BatchRun (net * net.IPNet ) {
51
+ scan := mutli .NewSubnetScanner ()
52
+ var finalRecord []define.Record
53
+ for r := range scan .ScanSubnet (net ) {
54
+ finalRecord = append (finalRecord , r ... )
55
+ }
56
+ if len (finalRecord ) == 0 {
57
+ log .Warn ("ScanSubnet Found Nothing" )
58
+ return
59
+ }
60
+ printResult (finalRecord )
61
+ }
62
+
63
+ func printResult (records define.Records ) {
64
+ if command .Opts .OutputFile != "" {
65
+ f , err := os .OpenFile (command .Opts .OutputFile , os .O_CREATE | os .O_WRONLY , 0644 )
66
+ if err != nil {
67
+ log .Warnf ("OpenFile failed: %v" , err )
68
+ }
69
+ defer f .Close ()
70
+ records .Print (log .StandardLogger ().Writer (), f )
71
+ } else {
72
+ records .Print (log .StandardLogger ().Writer ())
73
+ }
74
+ }
0 commit comments