126 lines
3.4 KiB
Bash
126 lines
3.4 KiB
Bash
#!/bin/sh
|
|
|
|
#OS Detect
|
|
case $(grep -e "^ID=*" "/etc/os-release" |sed 's/ID=//g') in
|
|
*"alpine"*)
|
|
dist=alp;;
|
|
*"ubuntu"* | *"debian"* )
|
|
dist=deb;;
|
|
*)
|
|
"This distro is not (yet) supported"
|
|
exit;;
|
|
esac
|
|
|
|
#Git-repo
|
|
repo=https://git.bprieshof.nl/Tools/LDS-Base
|
|
branch=main
|
|
LDSIDREPO=https://git.bprieshof.nl/Tools/LDS-ImageDownloader.git
|
|
|
|
pkgs="ca-certificates dnsmasq lighttpd"
|
|
|
|
##Set if using LDS-ImageDownloader
|
|
while true; do
|
|
read -r -n 1 -p"Install LDS-ImageDownloader? [y/n]: " REPLY1
|
|
echo ""
|
|
case $REPLY1 in
|
|
[yY]) LDSID=true
|
|
while true; do
|
|
read -r -n 1 -p"Download Installers? [y/n]: " REPLY2
|
|
echo ""
|
|
case $REPLY2 in
|
|
[yY]) LDSIDdwni=true
|
|
break;;
|
|
[nN])LDSIDdwni=false
|
|
break;;
|
|
*) echo "invalid input"
|
|
esac
|
|
done
|
|
while true; do
|
|
read -r -n 1 -p"Download Tools? [y/n]: " REPLY3
|
|
echo ""
|
|
case $REPLY3 in
|
|
[yY]) LDSIDdwnt=true
|
|
break;;
|
|
[nN]) LDSIDdwnt=false
|
|
break;;
|
|
*) echo "invalid input"
|
|
esac
|
|
done
|
|
pkgs="$pkgs zstd cpio git"
|
|
case $dist in
|
|
alp)
|
|
pkgs="$pkgs bash cdrkit"
|
|
break;;
|
|
deb )
|
|
pkgs="$pkgs genisoimage wget unzip"
|
|
break;;
|
|
esac
|
|
break;;
|
|
[nN]) LDSID=false
|
|
break;;
|
|
*) echo "invalid input"
|
|
esac
|
|
done
|
|
|
|
|
|
## install packages
|
|
case $dist in
|
|
alp)
|
|
pkgs="$pkgs grep"
|
|
apk update
|
|
apk add $pkgs
|
|
rc-update add lighttpd
|
|
rc-update add dnsmasq;;
|
|
deb )
|
|
apt update
|
|
apt install -y $pkgs
|
|
systemctl enable lighttpd dnsmasq;;
|
|
esac
|
|
|
|
wget -O /tmp/LDS.tar.gz "$repo"/archive/"$branch".tar.gz
|
|
tar -xzf /tmp/LDS.tar.gz -C /tmp
|
|
|
|
#Configure (re)start services
|
|
mkdir -p /opt/LDS/tftp /opt/LDS/www
|
|
mv /tmp/lds-base/iPXE /opt/LDS/tftp
|
|
mv /tmp/lds-base/UpdateIP.sh /opt/LDS
|
|
mv /tmp/lds-base/dnsmasq.conf /etc/dnsmasq.conf
|
|
mv /tmp/lds-base/lighttpd.conf /etc/lighttpd/lighttpd.conf
|
|
|
|
#Set dnsmasq ip range
|
|
echo ""
|
|
echo ""
|
|
ip a
|
|
|
|
read -p "Please enter the name of the network inteface: " netIF
|
|
sed -i "/NetIF=/c\NetIF=$netIF" /opt/LDS/UpdateIP.sh
|
|
ipa=$(ip -4 addr show $netIF | grep -m 1 -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -E -o "([0-9]{1,3}[\.]){2}[0-9]{1,3}" |head -1 )
|
|
ipa="$ipa"".0"
|
|
sed -i '/dhcp-range/c\dhcp-range='"$ipa"',proxy' /etc/dnsmasq.conf
|
|
## install packages
|
|
case $dist in
|
|
alp)
|
|
service lighttpd stop
|
|
service dnsmasq stop
|
|
service lighttpd start
|
|
service dnsmasq start;;
|
|
deb )
|
|
systemctl stop lighttpd dnsmasq
|
|
systemctl start lighttpd dnsmasq;;
|
|
esac
|
|
|
|
#Install LDS-ImageDownloader
|
|
if $LDSID; then
|
|
git clone $LDSIDREPO /opt/LDS/ImageDownloader
|
|
cd /opt/LDS/ImageDownloader/
|
|
ln -s /opt/LDS/ImageDownloader/LinuxInstallers-LID.ipxe /opt/LDS/tftp/iPXE/LinuxInstallers-LID.ipxe
|
|
sed -i '/set LDSIMenu/c\set LDSIMenu LinuxInstallers-LID.ipxe' /opt/LDS/tftp/iPXE/LDS.ipxe
|
|
if $LDSIDdwnt; then
|
|
sed -i -e 's/#item CloneZilla/item CloneZilla/g' -e 's/#item GParted/item GParted/g' -e 's/#item SystemRescueCD/item SystemRescueCD/g' /opt/LDS/tftp/iPXE/LDS.ipxe
|
|
$SHELL Download-AllTools.sh
|
|
fi
|
|
if $LDSIDdwni; then
|
|
$SHELL Download-AllInstallers.sh
|
|
fi
|
|
fi
|