Here is the python script.
import re,collections,json,csv,sys,urllib,urllib2
import requests
import shutil,time,os
import splunk.entity as entity
import splunk.Intersplunk
import argparse
def sitereview(url,proxy,port,username,password):
httpproxy = "{0}:{1}@{2}:{3}".format(username,password,proxy,port)
proxy_handler = urllib2.ProxyHandler({'http': httpproxy})
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)
baseurl = 'http://xxx/rest/categorization'
query_args = {'url': url}
data = urllib.urlencode(query_args)
headers = {'User-Agent':'Mozilla 5.10'}
request = urllib2.Request(baseurl, data, headers)
response = urllib2.urlopen(request)
json = response.read()
return json
def getCredentials(sessionKey):## added for getting the credentials
myapp = 'abc-app'
try: #list all credentials
entities = entity.getEntities("storage/passwords", namespace = myapp, owner = 'nobody', sessionKey = sessionKey)
except Exception, e:
raise Exception("Could not get %s credentials from splunk. Error: %s" %(myapp, str(e)))
for i, c in entities.items():
return c['username'], c['clear_password']
raise Exception("No credentials have been found")
def main():
databasefile = "localcat.txt"
date = time.strftime("%Y%m%d")
newfile = databasefile +"_"+ date
shutil.copyfile(databasefile, newfile)
os.remove(databasefile)
destination = open(databasefile, "w")
source = open(newfile, "r")
proxy = 'PROXY'
port = '80'
#username = 'USERNAME'
#password = 'PASSWORD'
## added for getting the credential from the sessionkey
results, unused1, settings = splunk.Intersplunk.getOrganizedResults()
sessionKey = settings['sessionKey']
if len(sessionKey) == 0:
sys.stderr.write("Did not receive a session key from splunkd.")
sys.exit(0)
username, password = getCredentials(sessionKey)
for line in source:
time.sleep(10)
if 'define category test_Incident' in line:
destination.write(line)
elif 'end' in line:
destination.write(line)
else:
result_json = sitereview(line,proxy,port,username,password)
parsed_json = json.loads(result_json)
unrated = str(parsed_json['unrated'])
if unrated.lower() == 'true':
destination.write(line)
source.close()
destination.close()
main()
... View more