@@ -64,6 +64,7 @@ func init() {
6464 scanCmd .Flags ().Bool ("skip-ping" , false , "skip ICMP ping step" )
6565 scanCmd .Flags ().Bool ("skip-nxdomain" , false , "skip NXDOMAIN hijack check" )
6666 scanCmd .Flags ().Bool ("edns" , false , "include EDNS payload size check (filters resolvers that don't support EDNS)" )
67+ scanCmd .Flags ().String ("output-ips" , "" , "write plain IP list (one per line) to this file" )
6768 scanCmd .Flags ().Int ("top" , 10 , "number of top results to display" )
6869 rootCmd .AddCommand (scanCmd )
6970}
@@ -79,6 +80,7 @@ func runScan(cmd *cobra.Command, args []string) error {
7980 skipNXD , _ := cmd .Flags ().GetBool ("skip-nxdomain" )
8081 ednsMode , _ := cmd .Flags ().GetBool ("edns" )
8182 topN , _ := cmd .Flags ().GetInt ("top" )
83+ outputIPs , _ := cmd .Flags ().GetString ("output-ips" )
8284
8385 if outputFile == "" {
8486 return fmt .Errorf ("--output / -o flag is required" )
@@ -201,7 +203,16 @@ func runScan(cmd *cobra.Command, args []string) error {
201203
202204 printSummary (report , topN , totalTime , domain )
203205
204- return scanner .WriteChainReport (report , outputFile )
206+ if err := scanner .WriteChainReport (report , outputFile ); err != nil {
207+ return err
208+ }
209+ if outputIPs != "" {
210+ if err := scanner .WriteIPList (report .Passed , outputIPs ); err != nil {
211+ return fmt .Errorf ("writing IP list: %w" , err )
212+ }
213+ fmt .Fprintf (os .Stderr , " %s✔ IP list written to %s (%d IPs)%s\n " , colorGreen , outputIPs , len (report .Passed ), colorReset )
214+ }
215+ return nil
205216}
206217
207218func pad (s string , width int ) string {
0 commit comments