diff src/ut/main.go @ 20:0a6541999b53

ut: add netcat.
author pyon@macmini
date Sat, 23 Jun 2018 18:23:54 +0900
parents 8008046c8d76
children 4232b4cbeeb5
line wrap: on
line diff
--- a/src/ut/main.go	Sat Jun 23 12:27:35 2018 +0900
+++ b/src/ut/main.go	Sat Jun 23 18:23:54 2018 +0900
@@ -16,7 +16,6 @@
     "io/ioutil"
     "log"
     "mime/multipart"
-    "net"
     "net/http"
     "os"
     "runtime"
@@ -25,9 +24,10 @@
     "time"
 
     "./lu"
+    "./nw"
 )
 
-var version = "1.04"
+var version = "1.05"
 
 func main() {
 
@@ -40,7 +40,7 @@
     var wget     = flag.Bool( "w", false, "little wget tool." )                             // ok
     var wc_l     = flag.Bool( "l", false, "little wc -l tool." )                            // ok
     var catn     = flag.Bool( "C", false, "little cat -n tool." )                           // ok
-    var reverse  = flag.Bool( "q", false, "little tac tool. ( reverse file )" )             // ok
+    var reverse  = flag.Bool( "R", false, "little tac tool. ( reverse file )" )             // ok
     var uniq     = flag.Bool( "u",   false, "little uniq tool." )                           // ok
     var uniqc    = flag.Bool( "uc",  false, "little uniq tool.( count )" )                  // ok
     var uniqd    = flag.Bool( "ud",  false, "little uniq tool.( only dup )" )               // ok
@@ -52,6 +52,9 @@
     var orgrep   = flag.String( "A", "", "little grep tool. ( from list file )" )           // ok
     var orgrepv  = flag.String( "B", "", "little grep -v tool. ( from list file )" )        // ok
     var tee      = flag.String( "e", "", "little tee tool." )                               // ok
+    var nc       = flag.Bool( "nc",  false, "netcat." )                                     // ok
+    var ncl      = flag.Bool( "ncl", false, "netcat listen-mode." )                         // ok
+
 
     var msleep   = flag.Bool( "M", false, "sleep." )
     //var swatch   = flag.Bool( "W", false, "stop watch." )
@@ -93,19 +96,7 @@
         fmt.Fprintf( os.Stderr, "OS = %s\n", runtime.GOOS )
         fmt.Fprintf( os.Stderr, "ARCH = %s\n", runtime.GOARCH )
         fmt.Fprintf( os.Stderr, "HOSTNAME = %s", host )
-        addrs, err := net.InterfaceAddrs()
-        if err != nil {
-            log.Fatal( err )
-        }
-        ip := "127.0.0.1"
-        for _, addr := range addrs {
-            if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
-                if ipnet.IP.To4() != nil {
-                    ip = ipnet.IP.String()
-                }
-            }
-        }
-        fmt.Fprintf( os.Stderr, " [%s]\n", ip )
+        fmt.Fprintf( os.Stderr, " [%s]\n", nw.GetLocalIP() )
         os.Exit( 0 )
     }
 
@@ -278,6 +269,24 @@
         os.Exit( 0 )
     }
 
+    if *nc {    // done.
+        if flag.NArg() != 2 {
+            fmt.Fprintf( os.Stderr, "$ ut -nc 192.168.0.55 8080\n" )
+            os.Exit( 1 )
+        }
+        nw.Netcat( flag.Args()[0], flag.Args()[1] )
+        os.Exit( 0 )
+    }
+
+    if *ncl {   // done.
+        if flag.NArg() == 0 {
+            fmt.Fprintf( os.Stderr, "$ ut -ncl 8080\n" )
+            os.Exit( 1 )
+        }
+        nw.Netcat_l( flag.Args()[0] )
+        os.Exit( 0 )
+    }
+
     if *ipscan {
         fmt.Fprintln( os.Stderr, "not implement" )
         os.Exit( 2 )