Skip to content

Instantly share code, notes, and snippets.

@xstpl
Forked from qrtt1/tomcat-manger.py
Created November 27, 2016 03:52
Show Gist options
  • Save xstpl/1b1c16baa7573e20e1a7c4afb4c7730a to your computer and use it in GitHub Desktop.
Save xstpl/1b1c16baa7573e20e1a7c4afb4c7730a to your computer and use it in GitHub Desktop.
write a tomcat-manager script for python. ref: http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html
import os
import urllib2, base64
import sys
import urllib
class TomcatManager(object):
def __init__(self, endpoint, username, password):
self.endpoint = endpoint
self.auth_token = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
def send_request(self, command, **kwargs):
parameters = ""
if kwargs:
parameters = "?"+urllib.urlencode(kwargs)
request = urllib2.Request("http://%s/manager/text/%s%s" % (self.endpoint, command, parameters))
request.add_header("Authorization", "Basic %s" % self.auth_token)
response = urllib2.urlopen(request).read()
if response:
response = response.strip()
data = response.split("\n")
return data
def serverinfo(self):
return self.send_request("serverinfo")
def list(self):
return self.send_request("list")
def reload(self, context):
return self.send_request("reload", path="/"+context)
def deploy(self, context, path):
use_reload_command = False
for web in self.list():
if "/"+context in web:
use_reload_command = True
if use_reload_command:
return self.reload(context)
return self.send_request("deploy", path="/"+context, war=os.path.abspath(path))
if __name__ == "__main__":
username = os.environ['TOMCAT_MGR_USER']
password = os.environ['TOMCAT_MGR_PASSWD']
endpoint = os.environ['TOMCAT_MGR_ENDPOINT']
mgr = TomcatManager(endpoint, username, password)
print mgr.deploy('MyWeb', 'webapps/MyWeb')
print mgr.list()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment