Skip to content

Commit c16c7d8

Browse files
committed
update: subnet batch run
1 parent ec0b8fe commit c16c7d8

File tree

1 file changed

+40
-13
lines changed

1 file changed

+40
-13
lines changed

cmd/subnet/subnet.go

+40-13
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package subnet
22

33
import (
4+
"net"
45
"os"
56

67
command "github.com/esonhugh/k8spider/cmd"
78
"github.com/esonhugh/k8spider/define"
89
"github.com/esonhugh/k8spider/pkg"
10+
"github.com/esonhugh/k8spider/pkg/mutli"
911
"github.com/esonhugh/k8spider/pkg/scanner"
1012
log "github.com/sirupsen/logrus"
1113
"github.com/spf13/cobra"
@@ -28,20 +30,45 @@ var SubNetCmd = &cobra.Command{
2830
log.Warnf("ParseStringToIPNet failed: %v", err)
2931
return
3032
}
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)
4335
} else {
44-
records.Print(log.StandardLogger().Writer())
36+
Run(ipNets)
4537
}
4638
},
4739
}
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

Comments
 (0)