r8584: added --nbt option to smbstatus for nbt server statistics
[jra/samba/.git] / source4 / scripting / bin / smbstatus
1 #!/bin/sh
2 exec smbscript "$0" ${1+"$@"}
3 /*
4   provide information on connected users and open files
5   Copyright Andrew Tridgell 2005
6   Released under the GNU GPL v2 or later
7 */      
8
9 libinclude("base.js");
10 libinclude("management.js");
11
12 var options = new Object();
13
14 ok = GetOptions(ARGV, options,
15                 "POPT_AUTOHELP",
16                 "POPT_COMMON_SAMBA",
17                 "nbt");
18 if (ok == false) {
19         println("Failed to parse options: " + options.ERROR);
20         return -1;
21 }
22
23 /*
24   show open sessions
25 */
26 function show_sessions()
27 {
28         var sessions = smbsrv_sessions();
29         var i;
30         var sys = sys_init();
31         if (sessions == undefined) {
32                 println("No sessions open");
33                 return;
34         }
35         printf("User                                  Client      Connected at\n");
36         printf("-------------------------------------------------------------------------------\n");
37         for (i=0;i<sessions.length;i++) {
38                 var info = sessions[i];
39                 var fulluser = sprintf("%s/%s", info.account_name, info.domain_name);
40                 printf("%-30s %16s   %s\n", 
41                        fulluser, info.client_ip, sys.httptime(info.connect_time));
42         }
43         printf("\n");
44 }
45
46 /*
47   show open tree connects
48 */
49 function show_trees()
50 {
51         var trees = smbsrv_trees();
52         var sys = sys_init();
53         if (trees == undefined) {
54                 println("No tree connects");
55                 return;
56         }
57         printf("Share                                 Client      Connected at\n");
58         printf("-------------------------------------------------------------------------------\n");
59         for (i=0;i<trees.length;i++) {
60                 var info = trees[i];
61                 printf("%-30s %16s   %s\n", 
62                        info.share_name, info.client_ip, sys.httptime(info.connect_time));
63         }
64 }
65
66 /*
67   show nbtd information
68 */
69 function show_nbt()
70 {
71         var stats = nbtd_statistics();
72         if (stats == undefined) {
73                 println("nbt server not running");
74                 return;
75         }
76         var r;
77         println("NBT server statistics:");
78         for (r in stats) {
79                 print("\t" + r + ":\t" + stats[r] + "\n");
80         }
81         println("");
82 }
83
84
85 if (options['nbt'] != undefined) {
86         show_nbt();
87 } else {
88         show_sessions();
89         show_trees();
90 }
91
92 return 0;