@@ -16,6 +16,19 @@ def list_sensor_groups(cb, parser, args):
16
16
print ("" )
17
17
18
18
19
+ def list_sensors (cb , parser , args ):
20
+ if args .group_name :
21
+ group = cb .select (SensorGroup ).where ("name:{0}" .format (args .group_name )).first ()
22
+ else :
23
+ group = min (cb .select (SensorGroup ), key = lambda x : x .id )
24
+
25
+ print ("Sensors in group {0} (id {1}):" .format (group .name , group .id ))
26
+ print (" {0:40}{1:18}{2}" .format ("Hostname" , "IP Address" , "Last Checkin Time" ))
27
+ for sensor in group .sensors :
28
+ ipaddrs = [iface .ipaddr for iface in sensor .network_interfaces if iface .ipaddr not in ("127.0.0.1" , "0.0.0.0" )]
29
+ print (" {0:40}{1:18}{2}" .format (sensor .hostname , ipaddrs [0 ], sensor .last_checkin_time ))
30
+
31
+
19
32
def add_sensor_group (cb , parser , args ):
20
33
g = cb .create (SensorGroup )
21
34
@@ -97,6 +110,10 @@ def main():
97
110
del_command .add_argument ("--force" , help = "If NAME matches multiple sensor groups, delete all matching sensor groups" ,
98
111
action = "store_true" , default = False )
99
112
113
+ list_sensors_command = commands .add_parser ("list-sensors" , help = "List all sensors in a sensor group" )
114
+ list_sensors_command .add_argument ("-n" , "--name" , action = "store" , help = "Sensor group name" , required = False ,
115
+ dest = "group_name" )
116
+
100
117
args = parser .parse_args ()
101
118
cb = get_cb_response_object (args )
102
119
@@ -106,6 +123,8 @@ def main():
106
123
return add_sensor_group (cb , parser , args )
107
124
elif args .command_name == "delete" :
108
125
return delete_sensor_group (cb , parser , args )
126
+ elif args .command_name == "list-sensors" :
127
+ return list_sensors (cb , parser , args )
109
128
110
129
111
130
if __name__ == "__main__" :
0 commit comments