Last active
May 2, 2019 12:37
-
-
Save grahampugh/6577cb40c90f0b51cb8028484604f418 to your computer and use it in GitHub Desktop.
Uninstalls OpenJDK 11 or any Oracle Java for that matter.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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