url = "change me" #give here the pkg installer download link of itsm agent

import ssl
from urllib import request
import os

file_dir= "/Library/Application Support/itsm_agent"

if not os.path.exists(file_dir):
    os.makedirs(file_dir)

Down_path=file_dir
fileName = url.split('/')[-1]
DownTo = os.path.join(Down_path, fileName)

def ecmd(command):   
    from subprocess import Popen, PIPE

    obj = Popen(command, shell = True, stdout = PIPE, stderr = PIPE)
    out, err = obj.communicate()
    ret=obj.returncode
    return ret,out,err

def downloadFile(DownTo, fromURL):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
    context = ssl._create_unverified_context()
    Rq = request.Request(fromURL, headers=headers)
    req = request.urlopen(Rq,context=context)
    try:
        with open(DownTo, 'wb') as f:
            while True:
                chunk = req.read(100*1000*1000)
                if chunk:
                    f.write(chunk)
                else:
                    break
        if os.path.isfile(DownTo):
            return '{} - {}KB'.format(DownTo, os.path.getsize(DownTo)/1024)
		
    except:
        return 'Please Check URL or Download Path!'

print(downloadFile(DownTo,url))

xmlpath = "/Library/LaunchDaemons/com.startup.plist"
scriptpath = Down_path + "/install_itsm.sh"
first_script_path = Down_path + "/load_and_uninstall_itsm.sh"

run_at_startup = """#!/bin/sh
sudo rm -r "/Applications/Endpoint Manager Communication Client.app"
sleep 90
sudo installer -pkg "%s" -target /
sleep 30
sudo rm "%s"
sudo launchctl unload -w /Library/LaunchDaemons/com.startup.plist
"""%(DownTo,first_script_path)

with open(scriptpath,'w') as f:
    f.write(run_at_startup)


task_xml = r"""<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
        <dict>
                <key>Label</key>
                <string>com.startup</string>
                <key>Program</key>
                <string>"""+scriptpath+r"""</string>
                <key>RunAtLoad</key>
                <true/>
        </dict>
</plist>
"""

with open(xmlpath,'w') as f:
    f.write(task_xml)

load_and_uninstall = """#!/bin/sh
chmod +x "%s"
sudo chmod 600 /Library/LaunchDaemons/com.startup.plist
sudo launchctl load -w /Library/LaunchDaemons/com.startup.plist
"""%(scriptpath)

with open(first_script_path,'w') as f:
    f.write(load_and_uninstall)

ret,out,err = ecmd('sh "%s"'%(first_script_path))
if ret==0:
    if out:
        print(out.decode('utf-8').strip())
else:
    print(err.decode('utf-8').strip())