Skip to content

Instantly share code, notes, and snippets.

@grahampugh
Last active May 2, 2019 12:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grahampugh/6577cb40c90f0b51cb8028484604f418 to your computer and use it in GitHub Desktop.
Save grahampugh/6577cb40c90f0b51cb8028484604f418 to your computer and use it in GitHub Desktop.
Uninstalls OpenJDK 11 or any Oracle Java for that matter.
#!/usr/bin/python
'''
Uninstall Java/OpenJDK
Deisgned to be run from Jamf Pro
Parameter 4 needs to be supplied - the version of Java/OpenJDK to remove
'''
import os, sys
import shutil
import subprocess
import plistlib
def get_jdk_version():
"""Returns the latest installed jdk version"""
java_arch = "x86_64"
try:
jdk_home_output = "/usr/libexec/java_home -X"
process = subprocess.check_output(jdk_home_output.split())
jdk_version_plist = plistlib.readPlistFromString(process)
i = 0
while i < len(jdk_version_plist):
if jdk_version_plist[i]["JVMArch"] == java_arch:
jdk_version = jdk_version_plist[i]["JVMVersion"]
break
i += 1
except subprocess.CalledProcessError:
pass
try:
jdk_version
except NameError:
jdk_version = ""
return jdk_version
def main():
"""Remove a specific version of Java / OpenJDK"""
if sys.argv[4]:
version_to_remove = sys.argv[4]
else:
print "Error: No version of Java specified"
exit(1)
# check that the relevant version of Java is installed
jdk_version = get_jdk_version()
version_check = "{}.".format(version_to_remove)
if version_check not in str(jdk_version):
print "Java / OpenJDK {} not installed".format(version_to_remove)
exit()
# remove the folders and files
print "Removing all Java files and folders"
java_folders = [
'/Library/Java/JavaVirtualMachines/jdk{}.jdk'.format(jdk_version),
'/Library/Java/JavaVirtualMachines/jdk-{}.jdk'.format(jdk_version),
'/Library/PreferencePanes/JavaControlPanel.prefPane',
'/Library/Internet Plug-Ins/JavaAppletPlugin.plugin',
'/Library/Application Support/Oracle/Java/Deployment'
]
for d in java_folders:
try:
shutil.rmtree(d)
print "Deleted: {}".format(d)
except OSError as e:
print "Error: {0} - {1}.".format(e.filename, e.strerror)
java_files = [
'/Library/LaunchAgents/com.oracle.java.Java-Updater.plist',
'/Library/PrivilegedHelperTools/com.oracle.java.JavaUpdateHelper',
'/Library/LaunchDaemons/com.oracle.java.Helper-Tool.plist',
'/Library/Preferences/com.oracle.java.Helper-Tool.plist',
'/Library/Preferences/com.oracle.java.Java-Updater.plist',
'/Library/Application Support/Oracle/Java/Deployment'
]
for f in java_files:
try:
os.remove(f)
print "Deleted: {}".format(d)
except OSError as e:
print "Error: {0} - {1}.".format(e.filename, e.strerror)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment