#!/bin/bash BASEDIR=$PWD TAG=$(cat /opt/debian-bash/.semver_git_tag) function usage { echo 'usage: --host | --containers | --full | --one-container ' exit -1 } function install_host { echo "install on: $HOSTNAME" echo ---------------------- [ `id -u` -ne 0 ] && echo 'root privilege required' && exit 1 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 `lxc list --format=json | 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