You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
2.9 KiB
126 lines
2.9 KiB
#!/bin/bash
|
|
|
|
|
|
BASEDIR=$PWD
|
|
TAG=$(cat /opt/debian-bash/.semver_git_tag)
|
|
|
|
function usage {
|
|
echo 'usage: --host | --containers | --full | --one-container <CT_NAME>'
|
|
exit -1
|
|
}
|
|
|
|
function install_host {
|
|
echo "install on: $HOSTNAME"
|
|
echo ----------------------
|
|
|
|
[ `id -u` -ne 0 ] && echo 'root privilege required' && exit 1
|
|
|
|
# required packages jq
|
|
/usr/bin/dpkg-query --status jq >/dev/null 2>&1
|
|
[ $? -ne 0 ] && /usr/bin/apt install -y jq
|
|
|
|
# required packages rsync
|
|
/usr/bin/dpkg-query --status rsync >/dev/null 2>&1
|
|
[ $? -ne 0 ] && /usr/bin/apt install -y rsync
|
|
|
|
|
|
if [[ ! $BASEDIR == '/opt/debian-bash' ]]; then
|
|
# download and filfull /opt/debian-bash, then run it from folder
|
|
|
|
if [[ -L /opt/debian-bash ]];then
|
|
cd /opt/debian-bash
|
|
./install.sh $PARAM1
|
|
exit 0
|
|
else
|
|
|
|
rm -rf /opt/debian-bash
|
|
TEMP=`mktemp -d`
|
|
cd $TEMP
|
|
echo $TEMP
|
|
wget https://git.artcode.re/pvincent/debian-bash/archive/master.tar.gz
|
|
tar -xzf master.tar.gz
|
|
mv debian-bash /opt/
|
|
cd /opt/debian-bash
|
|
./install.sh $PARAM1
|
|
rm -rf $TEMP
|
|
exit 0
|
|
fi
|
|
|
|
else
|
|
|
|
#remove /etc/skel/.bashrc
|
|
if [ -e /etc/skel/.bashrc ]; then
|
|
rm /etc/skel/.bashrc
|
|
fi
|
|
|
|
ORIGINAL="ORIGINAL"
|
|
declare -a arr=(/etc/bash.bashrc /etc/inputrc /etc/vim/vimrc)
|
|
|
|
for i in "${arr[@]}"
|
|
do
|
|
if [ ! -f "$i.$ORIGINAL" ]; then
|
|
|
|
echo "$i needs installation $(basename $i)"
|
|
mv "$i" "$i.$ORIGINAL"
|
|
ln -s "$BASEDIR/$(basename $i)" "$i"
|
|
else
|
|
echo "$i" already overriden
|
|
fi
|
|
done
|
|
source /etc/bash.bashrc
|
|
fi
|
|
}
|
|
|
|
function install_containers {
|
|
echo "install containers"
|
|
echo --------------------
|
|
|
|
# install inside active LXC containers
|
|
if [[ -f '/snap/bin/lxc' ]]; then
|
|
for container in `/snap/bin/lxc list --format=json | /bin/jq -r '.[] | select(.state.status == "Running") | .name'`; do
|
|
install_one_container $container
|
|
echo
|
|
done
|
|
fi
|
|
|
|
}
|
|
|
|
function install_one_container {
|
|
CT=$1
|
|
echo "install container <$CT>"
|
|
echo -------------------------
|
|
# install inside one active LXC container
|
|
if [[ -f '/snap/bin/lxc' ]]; then
|
|
echo "pushed to $CT"
|
|
/snap/bin/lxc file push /opt/debian-bash "${CT}/opt/" -r
|
|
/snap/bin/lxc exec "$CT" -- sh -c "cd /opt/debian-bash && ./install.sh --host"
|
|
fi
|
|
}
|
|
|
|
PARAM1=$1
|
|
|
|
case $PARAM1 in
|
|
"--host")
|
|
install_host
|
|
;;
|
|
"--containers")
|
|
install_containers
|
|
;;
|
|
"--one-container")
|
|
CT=$2
|
|
if [ ! -z $CT ]; then
|
|
install_one_container $CT
|
|
else
|
|
usage
|
|
fi
|
|
;;
|
|
"--full")
|
|
install_host
|
|
install_containers
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
|
|
|