splunkman 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,34 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ splunkman (0.0.1)
5
+ json
6
+ rake
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.3.2)
12
+ crack (0.3.1)
13
+ diff-lcs (1.1.3)
14
+ json (1.7.4)
15
+ rake (0.9.2.2)
16
+ rspec (2.11.0)
17
+ rspec-core (~> 2.11.0)
18
+ rspec-expectations (~> 2.11.0)
19
+ rspec-mocks (~> 2.11.0)
20
+ rspec-core (2.11.1)
21
+ rspec-expectations (2.11.2)
22
+ diff-lcs (~> 1.1.3)
23
+ rspec-mocks (2.11.2)
24
+ webmock (1.8.9)
25
+ addressable (>= 2.2.7)
26
+ crack (>= 0.1.7)
27
+
28
+ PLATFORMS
29
+ ruby
30
+
31
+ DEPENDENCIES
32
+ rspec
33
+ splunkman!
34
+ webmock
@@ -0,0 +1,4 @@
1
+ splunkman
2
+ =========
3
+
4
+ Ruby API to search Splunk
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,2 @@
1
+ require 'rubygems'
2
+ require 'json'
@@ -0,0 +1,41 @@
1
+ module SplunkMan
2
+ class Search
3
+
4
+ def initialize(splunk_server, user, password, splunk_search)
5
+ @splunk_search = splunk_search
6
+ @splunk_server = splunk_server
7
+ @user = user
8
+ @password = password
9
+ end
10
+
11
+ def execute
12
+ search_id = initiate_splunk_search @splunk_search
13
+ wait_for_splunk_search(search_id)
14
+ get_splunk_search_result search_id
15
+ end
16
+
17
+ private
18
+
19
+ def initiate_splunk_search(splunk_search)
20
+ filter_command = "egrep -o '<sid>.*</sid>' | sed -e 's/<sid>//;s/<\\/sid>//"
21
+ splunk_search_request = "curl -k -s -u #{@user}:#{@password} #{@splunk_server}/search/jobs -d #{splunk_search} | #{filter_command} '"
22
+ `#{splunk_search_request}`.chomp
23
+ end
24
+
25
+ def wait_for_splunk_search(search_id)
26
+ puts "waiting for result for search id #{search_id}"
27
+
28
+ done = ''
29
+ while done.empty? do
30
+ filter_command = "grep -e isDone..1"
31
+ done=`curl -k -s -u #{@user}:#{@password} #{@splunk_server}/search/jobs/#{search_id} | #{filter_command}`
32
+ print "."
33
+ end
34
+ end
35
+
36
+ def get_splunk_search_result(search_id)
37
+ splunk_search_result = "curl -k -s -u #{@user}:#{@password} #{@splunk_server}/search/jobs/#{search_id}/results --get -d output_mode=json"
38
+ JSON.parse(`#{splunk_search_result}`)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module SplunkMan
2
+ VERSION = "0.0.1"
3
+ end
Binary file
@@ -0,0 +1,29 @@
1
+ #-*- encoding: utf-8 -*-
2
+
3
+ $LOAD_PATH.push File.expand_path("../lib", __FILE__)
4
+ require "splunkman/version"
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "splunkman"
8
+ gem.version = SplunkMan::VERSION
9
+ gem.authors = ["Chris Tracey"]
10
+ gem.email = [""]
11
+ gem.homepage = "https://github.com/ctracey/splunkman"
12
+ gem.summary = %q{SplunkMan provides a simple API to execute saved searches on Splunk}
13
+
14
+ # gem.description = %q{}
15
+ # gem.rubyforge_project = "packbot"
16
+
17
+ gem.files = Dir.glob("**/*")
18
+ gem.test_files = Dir.glob("{spec}/**/*")
19
+ gem.executables = Dir.glob("{bin}/*").map{ |f| file.basename(f) }
20
+ gem.require_paths = ["lib"]
21
+
22
+ gem.add_runtime_dependency "rake"
23
+ gem.add_runtime_dependency "json"
24
+
25
+ gem.add_development_dependency "rspec"
26
+ gem.add_development_dependency "webmock"
27
+ end
28
+
29
+
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: splunkman
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Chris Tracey
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-08-17 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rake
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: json
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ type: :development
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: webmock
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ type: :development
75
+ version_requirements: *id004
76
+ description:
77
+ email:
78
+ - ""
79
+ executables: []
80
+
81
+ extensions: []
82
+
83
+ extra_rdoc_files: []
84
+
85
+ files:
86
+ - Gemfile
87
+ - Gemfile.lock
88
+ - lib/splunkman/search.rb
89
+ - lib/splunkman/version.rb
90
+ - lib/splunkman.rb
91
+ - pkg/splunkman-0.0.1.gem
92
+ - Rakefile
93
+ - README.md
94
+ - splunkman.gemspec
95
+ homepage: https://github.com/ctracey/splunkman
96
+ licenses: []
97
+
98
+ post_install_message:
99
+ rdoc_options: []
100
+
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ hash: 3
109
+ segments:
110
+ - 0
111
+ version: "0"
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ hash: 3
118
+ segments:
119
+ - 0
120
+ version: "0"
121
+ requirements: []
122
+
123
+ rubyforge_project:
124
+ rubygems_version: 1.8.21
125
+ signing_key:
126
+ specification_version: 3
127
+ summary: SplunkMan provides a simple API to execute saved searches on Splunk
128
+ test_files: []
129
+