kimberly-build/emily/archiso/airootfs/root/.automated_script.sh

45 lines
1.4 KiB
Bash
Raw Normal View History

2021-01-26 13:21:38 +01:00
#!/usr/bin/env bash
2023-12-23 10:40:19 +01:00
script_cmdline() {
2021-01-26 13:21:38 +01:00
local param
2023-12-23 10:40:19 +01:00
for param in $(</proc/cmdline); do
2021-01-26 13:21:38 +01:00
case "${param}" in
2023-12-23 10:40:19 +01:00
script=*)
echo "${param#*=}"
return 0
;;
2021-01-26 13:21:38 +01:00
esac
done
}
2023-12-23 10:40:19 +01:00
automated_script() {
2021-01-26 13:21:38 +01:00
local script rt
script="$(script_cmdline)"
if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then
2023-12-23 10:40:19 +01:00
if [[ "${script}" =~ ^((http|https|ftp|tftp)://) ]]; then
2023-05-30 08:33:27 +02:00
# there's no synchronization for network availability before executing this script
printf '%s: waiting for network-online.target\n' "$0"
until systemctl --quiet is-active network-online.target; do
sleep 1
done
printf '%s: downloading %s\n' "$0" "${script}"
curl "${script}" --location --retry-connrefused --retry 10 -s -o /tmp/startup_script
2021-01-26 13:21:38 +01:00
rt=$?
else
cp "${script}" /tmp/startup_script
rt=$?
fi
if [[ ${rt} -eq 0 ]]; then
chmod +x /tmp/startup_script
2023-05-30 08:33:27 +02:00
printf '%s: executing automated script\n' "$0"
# note that script is executed when other services (like pacman-init) may be still in progress, please
# synchronize to "systemctl is-system-running --wait" when your script depends on other services
2021-01-26 13:21:38 +01:00
/tmp/startup_script
fi
fi
}
if [[ $(tty) == "/dev/tty1" ]]; then
automated_script
fi