r9754: Upgrading with the command line utility now works, at least partially (-:
[kai/samba.git] / source4 / scripting / bin / smbstatus
index fd3009012b5d76681c549705715ad9891bc695f9..d5610023d688e3b86e0924587cba30fde5315b5b 100755 (executable)
@@ -11,16 +11,86 @@ libinclude("management.js");
 
 var options = new Object();
 
-ok = GetOptions(ARGV, options,
+options = GetOptions(ARGV,
                "POPT_AUTOHELP",
-               "POPT_COMMON_SAMBA");
-if (ok == false) {
-   println("Failed to parse options: " + options.ERROR);
-   return -1;
+               "POPT_COMMON_SAMBA",
+               "POPT_COMMON_VERSION",
+               "nbt");
+if (options == undefined) {
+       println("Failed to parse options: " + options.ERROR);
+       return -1;
 }
 
+/*
+  show open sessions
+*/
+function show_sessions()
+{
+       var sessions = smbsrv_sessions();
+       var i;
+       var sys = sys_init();
+       if (sessions == undefined) {
+               println("No sessions open");
+               return;
+       }
+       printf("User                                  Client      Connected at\n");
+       printf("-------------------------------------------------------------------------------\n");
+       for (i=0;i<sessions.length;i++) {
+               var info = sessions[i];
+               var fulluser = sprintf("%s/%s", info.account_name, info.domain_name);
+               printf("%-30s %16s   %s\n", 
+                      fulluser, info.client_ip, sys.httptime(info.connect_time));
+       }
+       printf("\n");
+}
+
+/*
+  show open tree connects
+*/
+function show_trees()
+{
+       var trees = smbsrv_trees();
+       var sys = sys_init();
+       if (trees == undefined) {
+               println("No tree connects");
+               return;
+       }
+       printf("Share                                 Client      Connected at\n");
+       printf("-------------------------------------------------------------------------------\n");
+       for (i=0;i<trees.length;i++) {
+               var info = trees[i];
+               printf("%-30s %16s   %s\n", 
+                      info.share_name, info.client_ip, sys.httptime(info.connect_time));
+       }
+}
 
-var sessions = smbsrv_sessions();
-printVars(sessions);
+/*
+  show nbtd information
+*/
+function show_nbt()
+{
+       var stats = nbtd_statistics();
+       if (stats == undefined) {
+               println("nbt server not running");
+               return;
+       }
+       var r;
+       println("NBT server statistics:");
+       for (r in stats) {
+               print("\t" + r + ":\t" + stats[r] + "\n");
+       }
+       println("");
+}
+
+var lp = loadparm_init();
+
+printf("%s\n\n", lp.get("server string"));
+
+if (options['nbt'] != undefined) {
+       show_nbt();
+} else {
+       show_sessions();
+       show_trees();
+}
 
 return 0;