nexposecli 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71e0ff1d5349522c0af200b465da46429d4790b6
4
- data.tar.gz: e9d0d3467cfc8bcaafeb034f7f7484ba8f2cae71
3
+ metadata.gz: f49f4e83f9ef01ac87442809f173e63aa37674f9
4
+ data.tar.gz: fa29239804d715454231171e514cb173e444f277
5
5
  SHA512:
6
- metadata.gz: 50fab0be43a770c53be083afa71490014dacb1f56ea88ce4b70d858ee9ef7652597c222fa0b5127ca284a3bbcfe9926a2a02c21163546ded47daa0ac197c31be
7
- data.tar.gz: 9ea66667ba4f8522a72b9d685fc304b910be87277d8d605173da204c74abd0b4d51ed340cbcbdb6c7b93905ecbc519f069d6708eea9afd15a77c7dbf1652f4eb
6
+ metadata.gz: 19c6e2b1b6f7b503f0a9fbd80ea454856d9fd69ee4d5ad22439dacc6d822f0e939bb965ad82013be8437929e800c519fb4f4e162bcc847208b12ce24dfa2d3a8
7
+ data.tar.gz: bcfa934b537318685021efc9f07f82d4f64e0eed9bcccce87cbb90299de18a6934c29f9b6f8001115406a0ca248e06d018c72cdfe7c93488a8148f7b5b886d1c
data/README.md CHANGED
@@ -17,8 +17,9 @@ or an example of running a query to list all active scans
17
17
  nexposecli --config ./lab.yaml --list --SCAN
18
18
 
19
19
  how to run an adhoc sql query and export via csv
20
+ NOTE: Consider the potential impact of running SQL queries without filters.
20
21
 
21
- nexposecli --run --QUERY --config ./lab.yaml --sql "select * from dim_asset"
22
+ nexposecli --run --QUERY --config ./lab.yaml --sql "select * from dim_asset limit 10"
22
23
 
23
24
  or for more complex sql queries, put the sql into a file and run
24
25
 
@@ -50,6 +51,14 @@ how to export packaged scan data in a single zip file
50
51
 
51
52
  nexposecli --config ./lab.yaml --SCAN --update --scanpath ./ --action export --id <scan id>
52
53
 
54
+ how to export packaged scan data in a single zip file
55
+
56
+ nexposecli --config ./lab.yaml --SCAN --update --scanpath ./ --action import --filterv scan-<scan id>.zip --id <site id>
57
+
58
+ how to import packaged scan data into a site
59
+
60
+ nexposecli --config ./lab.yaml --SCAN --update --scanpath ./ --action import --filterv <scan zip> --id <site id>
61
+
53
62
  where ./lab.yaml consists of the following:
54
63
 
55
64
  config:
data/bin/nexposecli CHANGED
@@ -28,6 +28,7 @@ require 'securerandom'
28
28
  require 'netaddr'
29
29
  require 'logger'
30
30
  require 'yaml'
31
+ require 'json'
31
32
  require 'csv'
32
33
  # for debug, this dumps the ruby objects to STDOUT
33
34
  require 'pp'
@@ -35,6 +36,7 @@ require 'pp'
35
36
  ##############################################################################
36
37
  # Set default var values
37
38
  $debug = false
39
+ $dryrun = false
38
40
  uf_scanners = ''
39
41
 
40
42
  @logpath = "./"
@@ -285,6 +287,10 @@ if args.scanpath
285
287
  end
286
288
 
287
289
  $debug = TRUE if args.verbose
290
+ $dryrun = TRUE if args.dryrun
291
+ uputs("CLI", "Command-line verbosity mode is #{$debug.to_s}")
292
+ uputs("CLI", "Command-line dry run mode is #{$dryrun.to_s}")
293
+ uputs("CLI", "Command-line args parsed for #{$0}")
288
294
  uputs("CLI", "Command-line args parsed for #{$0}")
289
295
  uputs("CLI", "Args: #{args.inspect}")
290
296
 
@@ -305,8 +311,9 @@ uputs("CLI", "Checking for the requested action")
305
311
  @action |= 16 if args.delete
306
312
  @action |= 32 if args.run
307
313
  @action |= 64 if args.sync
314
+ @action |= 128 if args.copy
308
315
  uputs("ACTION", "The requested action value is: #{@action.to_s}")
309
- raise "You can only submit one action per task, see --help (action submitted: #{@action.to_s})" unless [1,2,4,8,16,32,64].include?(@action)
316
+ raise "You can only submit one action per task, see --help (action submitted: #{@action.to_s})" unless [1,2,4,8,16,32,64,128].include?(@action)
310
317
 
311
318
  uputs("TARGET", "Checking for the requested target")
312
319
  @target = 0
@@ -326,8 +333,10 @@ uputs("TARGET", "Checking for the requested target")
326
333
  @target |= 8192 if args.ROLE
327
334
  @target |= 16384 if args.QUERY
328
335
  @target |= 32768 if args.AUTHSRC
336
+ @target |= 65536 if args.GROUP
337
+ @target |= 131072 if args.SCHEDULE
329
338
  uputs("TARGET", "The requested target value is: #{@target.to_s}")
330
- raise "You can only submit one target per task, see --help (#{@target})" unless [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768].include?(@target)
339
+ raise "You can only submit one target per task, see --help (#{@target})" unless [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072].include?(@target)
331
340
 
332
341
  # Needs to potentially move into TARGET object or module instance var
333
342
  ## First NSC Connection and Session creation
@@ -1040,23 +1049,39 @@ when 16 # TARGET SITE
1040
1049
  if (args.id != nil)
1041
1050
  scan_site_id = args.id.to_i
1042
1051
  end
1052
+
1043
1053
  begin
1044
1054
  site = Nexpose::Site.load(@nsc, scan_site_id)
1045
1055
  rescue Nexpose::APIError => e
1046
1056
  STDERR.puts "ERROR [ " + e.to_s + " ]"
1047
1057
  exit(-1)
1048
1058
  end
1059
+ upp(site)
1060
+ puts("\n")
1049
1061
  puts("Site: id:#{site.id}\t name:'#{site.name}'\tconfig version:#{site.config_version}\n--description:#{site.description}\n")
1050
- puts("--scan engine: #{site.engine}\tscan_template: '#{site.scan_template_name}'\n")
1051
- puts("--assets:")
1052
- site.assets.each do |iprange|
1062
+ puts("--default scan engine: #{site.engine_id}\tdefault scan_template: '#{site.scan_template_id}'\n")
1063
+ puts("--scan targets:")
1064
+ site.included_scan_targets[:addresses].each do |iprange|
1053
1065
  puts(" IPRange from: #{iprange.from} - #{iprange.to}\n")
1054
1066
  end
1055
- puts("--exclude:")
1056
- site.exclude.each do |iprange|
1067
+ puts("--excluded scan targets:")
1068
+ site.excluded_scan_targets[:addresses].each do |iprange|
1057
1069
  puts(" IPRange from: #{iprange.from} - #{iprange.to}\n")
1058
1070
  end
1059
- upp site
1071
+ puts("--active assets:")
1072
+ assets = @nsc.list_site_devices(scan_site_id)
1073
+ assets.each do |asset|
1074
+ print(" Asset Id: #{asset.id}, IP Address: #{asset.address}, Risk Score: #{asset.risk_score} Hostnames: [")
1075
+ asset_detail = Nexpose::Asset.load(@nsc, asset.id)
1076
+ if asset_detail.host_names
1077
+ asset_detail.host_names.each do |hostname|
1078
+ print("#{hostname},")
1079
+ end
1080
+ end
1081
+ print("] OS: #{asset_detail.os_cpe}\n")
1082
+ upp(asset_detail)
1083
+ end
1084
+ # upp site
1060
1085
  when 8 # update
1061
1086
  uputs("ACTION", 'update SITE action requested')
1062
1087
  site = ""
@@ -1083,9 +1108,101 @@ when 16 # TARGET SITE
1083
1108
  exit(-1)
1084
1109
  end
1085
1110
  site.exclude.push(Nexpose::IPRange.new(valid_xrange.split(',').first.to_s, valid_xrange.split(',').last.to_s))
1086
- site.save(@nsc)
1111
+ if $dryrun
1112
+ upp(site)
1113
+ puts "Site exclude request tested."
1114
+ else
1115
+ site.save(@nsc)
1116
+ end
1117
+ when "import-assets-csv"
1118
+ if File.file?(args.filterv)
1119
+ external_assets = []
1120
+ new_assets = CSV.read(args.filterv, :headers=>true)
1121
+ new_assets.each do |new_asset|
1122
+ upp(new_asset)
1123
+ puts("IP: #{new_asset['ip']} OS: #{new_asset['os']}")
1124
+ external_asset = Nexpose::External::Asset.new
1125
+ external_asset.ip = new_asset['ip']
1126
+ external_asset.aliases = []
1127
+ external_asset.fqdn = new_asset['fqdn']
1128
+ external_asset.net_bios = new_asset['net_bios']
1129
+ external_asset.mac = new_asset['mac']
1130
+ external_asset.host_type = new_asset['host_type']
1131
+ external_asset.os = "#{new_asset['os']}"
1132
+ import_time = Time.now
1133
+ external_asset.scan_date = %Q[#{import_time.strftime("%Y%m%dT%H%M%S.000-0600")}]
1134
+ upp(external_asset)
1135
+ external_assets.push(external_asset)
1136
+ end
1137
+ asset_import = @nsc.import_assets(scan_site_id, Array(external_assets))
1138
+ upp(asset_import)
1139
+ else
1140
+ puts("ERROR the filterv value passed is not a valid file.\n")
1141
+ end
1142
+ when "rsam-hostname", "RSAM-HOSTNAME"
1143
+ # RSAM Integration Asset housekeeping to reduce hostnames to a single usable value
1144
+ external_assets = []
1145
+ assets = @nsc.list_site_devices(scan_site_id)
1146
+ assets.each do |site_asset|
1147
+ asset = Nexpose::Asset.load(@nsc, site_asset.id)
1148
+ external_asset = Nexpose::External::Asset.new
1149
+ external_asset.ip = asset.ip
1150
+ external_asset.aliases = []
1151
+
1152
+ upp(asset.host_names)
1153
+ if (asset.host_names.nil?)
1154
+ puts("Asset had zero hostnames set. [#{asset.ip}]")
1155
+ next
1156
+ elsif (asset.host_names.length == 1) && (asset.host_names[0] !~ /^[^.]+\./)
1157
+ puts("Asset had the shortname already set. [#{asset.host_names[0]}]\n")
1158
+ next
1159
+ elsif (asset.host_names.length == 1) && (/^(?<short_name>[^.]+)\./ =~ asset.host_names[0])
1160
+ puts("Asset has the fqdn and needs the shortname to be set. [#{asset.host_names[0]}]")
1161
+ external_asset.fqdn = asset.host_names[0]
1162
+ external_asset.net_bios = short_name
1163
+ else
1164
+ asset.host_names.each do |hostname|
1165
+ puts("Asset has the multiple hostnames set. [#{hostname}]")
1166
+ if /^[^.]+\./ =~ hostname
1167
+ external_asset.fqdn = ''
1168
+ else
1169
+ external_asset.net_bios = hostname
1170
+ end
1171
+ end
1172
+ end
1173
+ external_asset.mac = asset.mac
1174
+ external_asset.host_type = asset.host_type
1175
+ import_time = Time.now
1176
+ external_asset.scan_date = %Q[#{import_time.strftime("%Y%m%dT%H%M%S.000-0600")}]
1177
+ external_asset.os = asset.os_cpe
1178
+
1179
+ # grab and set lazy attrs
1180
+ # if (asset.vulnerability_instances.nil?)
1181
+ # upp(asset.vulnerability_instances)
1182
+ external_asset.vulnerabilities = []
1183
+ asset.vulnerability_instances.each do |old_vuln|
1184
+ new_vuln = Nexpose::External::VulnerabilityCheck.new(
1185
+ old_vuln.vulnerability_id,
1186
+ Nexpose::External::VulnerabilityCheck::Status::EXPLOITED,
1187
+ old_vuln.proof,
1188
+ old_vuln.key)
1189
+ external_asset.vulnerabilities << new_vuln
1190
+ end
1191
+
1192
+ upp(external_asset)
1193
+ external_assets.push(external_asset)
1194
+ end
1195
+
1196
+ upp(external_assets)
1197
+ puts("SITE RSAM Hostname update for Site Id [#{scan_site_id}], contains [#{assets.length}] assets, attempting updates to [#{external_assets.length}] assets.")
1198
+ if (external_assets.empty?)
1199
+ puts("The Site Assets have no hostnames or are already all shortnames.")
1200
+ else
1201
+ # asset_import = @nsc.import_assets(scan_site_id, Array(external_assets))
1202
+ # upp(asset_import)
1203
+ end
1087
1204
  else
1088
- puts 'Not yet implemented'
1205
+ puts 'Not yet implemented'
1089
1206
  end
1090
1207
  when 16 # delete
1091
1208
  uputs("ACTION", 'delete SITE action requested')
@@ -1110,18 +1227,115 @@ when 32 # TARGET ASSET
1110
1227
  when 4 # show
1111
1228
  uputs("ACTION", 'show ASSET action requested')
1112
1229
  if is_numeric(args.id)
1113
- ag = Nexpose::AssetGroup.load(@nsc, args.id)
1114
- puts "There are #{ag.assets.size} assets in asset group id: #{args.id} name: \"#{ag.name}\".\n"
1115
- ag.assets.each do |asset|
1116
- puts "id: #{asset.id.to_s.ljust(10)} address: #{asset.address}"
1117
- end
1230
+ asset = Nexpose::Asset.load(@nsc, args.id)
1231
+ # upp(asset.vulnerability_instances)
1232
+ # upp(asset.vulnerabilities)
1233
+ upp(asset.services)
1118
1234
  else
1119
- puts 'The Asset Group Id must be numeric.'
1235
+ puts 'The Asset Id must be numeric.'
1120
1236
  end
1121
- upp(ag)
1237
+ upp(asset)
1122
1238
  when 8 # update
1123
1239
  uputs("ACTION", 'update ASSET action requested')
1124
- puts 'Not yet implemented'
1240
+ if is_numeric(args.id)
1241
+
1242
+ # GOMEZ
1243
+ # asset = Nexpose::Asset.load(@nsc, args.id)
1244
+
1245
+ external_asset = Nexpose::External::Asset.new
1246
+ external_asset.ip = '10.3.70.77'
1247
+ check = Nexpose::External::VulnerabilityCheck.new(
1248
+ 'snmp-read-0001',
1249
+ Nexpose::External::VulnerabilityCheck::Status::VERSION,
1250
+ 'External scanning resource.')
1251
+ external_asset.vulnerabilities << check
1252
+
1253
+ check = Nexpose::External::VulnerabilityCheck.new(
1254
+ 'ssh-default-account-admin-password-admin',
1255
+ Nexpose::External::VulnerabilityCheck::Status::POTENTIAL,
1256
+ 'External scanning resource.')
1257
+ external_asset.vulnerabilities << check
1258
+
1259
+ service_check = Nexpose::External::VulnerabilityCheck.new(
1260
+ 'http-generic-script-blind-sql-injection',
1261
+ Nexpose::External::VulnerabilityCheck::Status::EXPLOITED,
1262
+ 'External scanning resource.',
1263
+ '/')
1264
+ external_asset.vulnerabilities << service_check
1265
+
1266
+ service_check = Nexpose::External::VulnerabilityCheck.new(
1267
+ 'http-generic-script-blind-sql-injection',
1268
+ Nexpose::External::VulnerabilityCheck::Status::EXPLOITED,
1269
+ 'External scanning resource.',
1270
+ '/home/')
1271
+ external_asset.vulnerabilities << service_check
1272
+
1273
+ service_check = Nexpose::External::VulnerabilityCheck.new(
1274
+ 'http-generic-script-blind-sql-injection',
1275
+ Nexpose::External::VulnerabilityCheck::Status::EXPLOITED,
1276
+ 'External scanning resource.',
1277
+ '/')
1278
+ external_asset.vulnerabilities << service_check
1279
+ # external_asset.vulnerabilities = []
1280
+
1281
+ external_asset.aliases = []
1282
+ # external_asset.fqdn = 'gomez-nexpose01-ext.rapidcloud.priv'
1283
+ external_asset.net_bios = 'CleanNexpos-0'
1284
+ external_asset.mac = '00:50:56:02:18:19'
1285
+ external_asset.host_type = 'GUEST'
1286
+ external_asset.scan_date = '20141218T074721.823-0800'
1287
+ external_asset.os = 'cpe:/o:canonical:ubuntu_linux:12.04::~~lts~~~'
1288
+
1289
+ external_asset.software = ['cpe:/a:microsoft:office:2007',
1290
+ 'cpe:/a:microsoft:.net_framework:3.0:sp2',
1291
+ 'cpe:/a:microsoft:.net_framework:2.0:sp2']
1292
+ external_asset.software = []
1293
+
1294
+ external_asset.services = [
1295
+ Nexpose::External::Service.new(135, 'TCP', 'DCE Endpoint Resolution'),
1296
+ Nexpose::External::Service.new(137, 'UDP', 'CIFS Name Service'),
1297
+ Nexpose::External::Service.new(139, 'TCP', 'CIFS Windows Vista (TM) Enterprise 6.0'),
1298
+ Nexpose::External::Service.new(445, 'TCP', 'CIFS Windows Vista (TM) Enterprise 6.0') ]
1299
+ external_asset.services = []
1300
+
1301
+ external_asset.users = [
1302
+ Nexpose::UserAccount.new('Guest', 10, '', [{'gid' => '216'}]),
1303
+ Nexpose::UserAccount.new('Administrator', 1, 'Administrator', []),
1304
+ Nexpose::UserAccount.new('NetworkService', 403, 'NetworkService', []) ]
1305
+ external_asset.users = []
1306
+
1307
+ external_asset.groups = [
1308
+ Nexpose::GroupAccount.new('ANONYMOUS LOGON', 123),
1309
+ Nexpose::GroupAccount.new('Everyone', 124),
1310
+ Nexpose::GroupAccount.new('LOCAL SERVICE', 1),
1311
+ Nexpose::GroupAccount.new('SYSTEM'),
1312
+ Nexpose::GroupAccount.new('Guests', 122, [{'just' => 'because'}]),
1313
+ Nexpose::GroupAccount.new('Administrators', 10) ]
1314
+ external_asset.groups = []
1315
+
1316
+ external_asset.files = [
1317
+ Nexpose::File.new('ADMIN$', -1, true, [{'comment' => 'Remote Admin'}]),
1318
+ Nexpose::File.new('C$', 665321, true),
1319
+ Nexpose::File.new('c:\\', 665321, true) ]
1320
+
1321
+ external_asset.unique_identifiers = []
1322
+ upp(external_asset)
1323
+
1324
+ # test_json = JSON.generate(Array(Array([external_asset])).map(&:to_h))
1325
+
1326
+ # test_hash = JSON.parse(test_json)[0]
1327
+
1328
+ # upp( test_hash )
1329
+
1330
+ # GOMEZ
1331
+ # test_back = JSON.generate(test_hash)
1332
+ # upp( test_back)
1333
+
1334
+ # asset_import = @nsc.import_assets(39, Array([external_asset]))
1335
+ # upp(asset_import)
1336
+ else
1337
+ puts 'The Asset Id must be numeric.'
1338
+ end
1125
1339
  when 16 # delete
1126
1340
  uputs("ACTION", 'delete ASSET action requested')
1127
1341
  puts 'Not yet implemented'
@@ -1607,6 +1821,25 @@ when 2048 # TARGET CONSOLE
1607
1821
  uputs("ACTION", 'The action requested is not implemented for target')
1608
1822
  puts 'The action requested is not implemented for target'
1609
1823
  end
1824
+ when 4096 # TARGET TEMPLATE
1825
+ case @action
1826
+ when 2 # list
1827
+ uputs("ACTION", 'list TEMPLATE action requested')
1828
+ templates = @nsc.list_scan_templates
1829
+ templates.each do |template|
1830
+ scan_template = Nexpose::ScanTemplate.load(@nsc, "#{template.id}")
1831
+ puts "Scan Template Id: #{scan_template.id}"
1832
+ puts "Scan Template Name: #{scan_template.name}"
1833
+ # upp scan_template
1834
+ end
1835
+ when 128 # copy
1836
+ uputs("ACTION", 'copy TEMPLATE action requested')
1837
+ new_scan_template = Nexpose::ScanTemplate.load(@nsc, "#{args.id}")
1838
+ upp new_scan_template.xml
1839
+ else
1840
+ uputs("ACTION", 'The action requested is not implemented for target')
1841
+ puts 'The action requested is not implemented for target'
1842
+ end
1610
1843
  when 8192 # TARGET ROLE
1611
1844
  case @action
1612
1845
  when 1 # create, via copy for now
@@ -1672,8 +1905,12 @@ when 16384 # TARGET QUERY
1672
1905
  sql_config.add_filter('query', sql)
1673
1906
  # EJG
1674
1907
  if args.filter
1675
- if ['site','group','device','scan','vuln-categories','vuln-severity','vuln-status'].include?(args.filter)
1676
- sql_config.add_filter(args.filter, args.filterv)
1908
+ # if ['site','group','device','scan','vuln-categories','vuln-severity','vuln-status'].include?(args.filter)
1909
+ if ['site','group','device','scan'].include?(args.filter)
1910
+ groups = args.filterv.split(",")
1911
+ groups.each do |group|
1912
+ sql_config.add_filter(args.filter, group.to_i)
1913
+ end
1677
1914
  else
1678
1915
  ubail(-1, "The report filter type passed is not valid")
1679
1916
  end
@@ -1709,6 +1946,41 @@ when 32768 # TARGET AUTHSRC
1709
1946
  uputs("ACTION", 'The action requested is not implemented for target: AUTHSRC')
1710
1947
  puts 'The action requested is not implemented for target: AUTHSRC'
1711
1948
  end
1949
+ when 65536 # TARGET GROUP
1950
+ case @action
1951
+ when 1 # create
1952
+ uputs("ACTION", 'create GROUP action requested')
1953
+ puts 'Not yet implemented'
1954
+ when 2 # list
1955
+ uputs("ACTION", 'list GROUP action requested')
1956
+ assetgroups = @nsc.asset_groups
1957
+ uputs("ACTION", "There are #{assetgroups.size} asset groups.")
1958
+ assetgroups.each do |ags|
1959
+ puts "id: #{ags.id.to_s.ljust(10)} name: #{ags.name}"
1960
+ end
1961
+ upp assetgroups
1962
+ when 4 # show
1963
+ uputs("ACTION", 'show GROUP action requested')
1964
+ if is_numeric(args.id)
1965
+ ag = Nexpose::AssetGroup.load(@nsc, args.id)
1966
+ puts "There are #{ag.assets.size} assets in asset group id: #{args.id} name: \"#{ag.name}\".\n"
1967
+ ag.assets.each do |asset|
1968
+ puts "id: #{asset.id.to_s.ljust(10)} address: #{asset.address}"
1969
+ end
1970
+ else
1971
+ puts 'The Asset Group Id must be numeric.'
1972
+ end
1973
+ upp(ag)
1974
+ when 8 # update
1975
+ uputs("ACTION", 'update GROUP action requested')
1976
+ puts 'Not yet implemented'
1977
+ when 16 # delete
1978
+ uputs("ACTION", 'delete GROUP action requested')
1979
+ puts 'Not yet implemented'
1980
+ else
1981
+ uputs("ACTION", 'The action requested is not implemented for target')
1982
+ puts 'The action requested is not implemented for target'
1983
+ end
1712
1984
  else
1713
1985
  # there is no default target
1714
1986
  uputs("ACTION", 'No default action requested')
@@ -15,12 +15,18 @@ module Nexposecli
15
15
  short : v
16
16
  desc : Run verbosely
17
17
 
18
+ - name : dryrun
19
+ desc : Dry run mode, do not commit to Console
20
+
18
21
  - comment : EVM Administrative Actions
19
22
 
20
23
  - name : create
21
24
  short : c
22
25
  desc : The create action is used for new objects
23
26
 
27
+ - name : copy
28
+ desc : The copy action is used to copy of objects of the same type
29
+
24
30
  - name : list
25
31
  short : l
26
32
  desc : The list action is used to list of objects of the same type
@@ -98,6 +104,9 @@ module Nexposecli
98
104
  - name : CONSOLE
99
105
  desc : The CONSOLE target is used to alter the CONSOLE nsc connection object
100
106
 
107
+ - name : TEMPLATE
108
+ desc : The TEMPLATE target is used to alter the TEMPLATE nsc connection object
109
+
101
110
  - name : COMMAND
102
111
  short : C
103
112
  desc : The COMMAND target is only used in conjunction with the --run action
@@ -1,3 +1,3 @@
1
1
  module Nexposecli
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexposecli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Gomez
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-17 00:00:00.000000000 Z
12
+ date: 2017-03-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nexpose