Files
linux-scripts/ubuntu/ubuntu-essentials.sh

153 lines
5.9 KiB
Bash
Executable File

#!/bin/bash
if [ "$EUID" -ne 0 ]
then
echo "Please run as root"
exit
fi
# disable restart prompt for services during an update
if [[ ! -f /etc/needrestart/conf.d/no-prompt.conf ]] ; then
echo "\$nrconf{restart} = 'a';" >> /etc/needrestart/conf.d/no-prompt.conf
fi
# remove os prober
apt-get remove os-prober -y
# update and upgrade
apt-get update
apt-get upgrade -y
# check if vm or lxc
if [[ ! -d /dev/disk/by-id ]]
then
apt-get install -y qemu-guest-agent
else
isInFile=$(ls /dev/disk/by-id | grep -c "QEMU")
if [ $isInFile -eq 0 ]
then
apt-get remove -y qemu-guest-agent
else
apt-get install -y qemu-guest-agent
fi
fi
# download and install packages
apt-get install -y ncdu pwgen sudo nano curl wget zip unzip git rsync man-db cifs-utils nfs-common parted libtalloc2 libwbclient0 net-tools gnupg apt-transport-https tmux gdisk bash-completion
# add akanealw user if not existing
isInFile=$(cat /etc/passwd | grep -c "akanealw")
if [ $isInFile -eq 0 ]; then
echo "Set password for akanealw"
useradd -m -p $(openssl passwd -1 ${PASSWORD}) -s /bin/bash -d /home/akanealw akanealw
mkdir /home/akanealw/.ssh
chown akanealw:akanealw /home/akanealw/.ssh
chmod 700 /home/akanealw/.ssh
cp /root/.ssh/authorized_keys /home/akanealw/.ssh > /dev/null 2>&1
chown akanealw:akanealw /home/akanealw/.ssh/authorized_keys > /dev/null 2>&1
chmod 600 /home/akanealw/.ssh/authorized_keys > /dev/null 2>&1
fi
# create akanealw file in /etc/sudoers.d
if [[ ! -f /etc/sudoers.d/akanealw ]] ; then
echo "akanealw ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/akanealw
fi
usermod -a -G sudo akanealw
# enable ping for all users
setcap 'cap_net_admin,cap_net_raw+ep' $(which ping)
# remove all motd
apt-get remove --purge update-motd > /dev/null 2>&1
rm /etc/default/motd-news > /dev/null 2>&1
rm -r /etc/update-motd.d > /dev/null 2>&1
rm /etc/motd > /dev/null 2>&1
# git config
git config --global credential.helper store
git config --global user.name "akanealw"
git config --global user.email "akanealw@gmail.com"
git config --global init.defaultBranch main
# show ip in /etc/issue
wget -qO /etc/issue.default http://192.168.1.50/files/ubuntu/issue.default
rm /etc/issue > /dev/null 2>&1
rm /etc/issue.bak > /dev/null 2>&1
cp /etc/issue.default /etc/issue
name=$(basename /sys/class/net/e*)
echo "" >> /etc/issue
echo "$name: \4{$name}" >> /etc/issue
echo "" >> /etc/issue
# set input preferences
wget -qO /etc/inputrc.default http://192.168.1.50/files/ubuntu/inputrc.default
rm /etc/inputrc > /dev/null 2>&1
rm /etc/inputrc.bak > /dev/null 2>&1
cp /etc/inputrc.default /etc/inputrc
echo "" >> /etc/inputrc
echo "set completion-ignore-case On" >> /etc/inputrc
# set bash preferences and aliases
wget -qO /etc/bash.bashrc.default http://192.168.1.50/files/ubuntu/bash.bashrc.default
rm /etc/bash.bashrc > /dev/null 2>&1
rm /etc/bash.bashrc.bak > /dev/null 2>&1
cp /etc/bash.bashrc.default /etc/bash.bashrc
echo "" >> /etc/bash.bashrc
echo "# custom settings and aliases" >> /etc/bash.bashrc
echo "set -o noclobber" >> /etc/bash.bashrc
echo "alias lsa='ls -alhvF'" >> /etc/bash.bashrc
echo "alias cd..='cd ..'" >> /etc/bash.bashrc
echo "alias ..='cd ..'" >> /etc/bash.bashrc
echo "alias ...='cd ../..'" >> /etc/bash.bashrc
echo "alias grep='grep --color'" >> /etc/bash.bashrc
echo "alias si='sudo -i'" >> /etc/bash.bashrc
echo "alias sudo='sudo '" >> /bash.bashrc
echo "alias mkdir='mkdir -pv'" >> /bash.bashrc
echo "alias du='sudo du -h'" >> /bash.bashrc
echo "alias df='sudo df -h'" >> /etc/bash.bashrc
echo "alias ports='sudo netstat -tulpna'" >> /etc/bash.bashrc
echo "alias start='sudo systemctl start'" >> /etc/bash.bashrc
echo "alias stop='sudo systemctl stop'" >> /etc/bash.bashrc
echo "alias restart='sudo systemctl restart'" >> /etc/bash.bashrc
echo "alias status='sudo systemctl status'" >> /etc/bash.bashrc
echo "alias tf='sudo tail -f'" >> /etc/bash.bashrc
echo "alias aptupy='sudo apt update && sudo apt upgrade -y'" >> /etc/bash.bashrc
echo "alias aptiy='sudo apt install -y'" >> /etc/bash.bashrc
echo "alias aptry='sudo apt remove -y'" >> /etc/bash.bashrc
echo "alias aptrpy='sudo apt remove --purge -y'" >> /etc/bash.bashrc
echo "alias aptary='sudo apt autoremove -y'" >> /etc/bash.bashrc
echo "alias apts='sudo apt search'" >> /etc/bash.bashrc
echo "alias aptl='sudo apt list --installed'" >> /etc/bash.bashrc
echo "alias aptsh='sudo apt show'" >> /etc/bash.bashrc
echo "alias aptac='sudo apt-get autoclean'" >> /etc/bash.bashrc
echo "alias dpkgi='sudo dpkg -i'" >> /etc/bash.bashrc
echo "alias sreboot='sudo reboot'" >> /etc/bash.bashrc
echo "alias spoweroff='sudo poweroff'" >> /etc/bash.bashrc
echo "alias tmuxls='tmux ls'" >> /etc/bash.bashrc
echo "alias tmuxa='tmux attach -t'" >> /etc/bash.bashrc
echo "alias dc='docker compose'" >> /etc/bash.bashrc
echo "alias dcup='docker compose up -d'" >> /etc/bash.bashrc
echo "alias dcdown='docker compose down'" >> /etc/bash.bashrc
echo "alias dcpull='docker compose pull'" >> /etc/bash.bashrc
echo "alias dps='docker ps'" >> /etc/bash.bashrc
echo "alias dstart='docker start'" >> /etc/bash.bashrc
echo "alias dstop='docker stop'" >> /etc/bash.bashrc
echo "alias drestart='docker restart'" >> /etc/bash.bashrc
echo "alias dlf='docker logs -f'" >> /etc/bash.bashrc
echo "alias dipaf='docker image prune -a -f'" >> /etc/bash.bashrc
# create tmux config
rm /etc/tmux.conf* > /dev/null 2>&1
echo "unbind C-b" >> /etc/tmux.conf
echo "set-option -g prefix C-a" >> /etc/tmux.conf
echo "bind-key C-a send-prefix" >> /etc/tmux.conf
# create credentials and map network drives
isInFile=$(cat /etc/fstab | grep -c "192.168.1.41")
if [ $isInFile -eq 0 ]; then
mkdir /mnt/truenasdata > /dev/null 2>&1
chown akanealw:akanealw /mnt/truenasdata
echo "# nfs shares" >> /etc/fstab
echo "192.168.1.41:/mnt/data /mnt/truenasdata nfs defaults,nolock,soft,vers=4.2 0 0" >> /etc/fstab
fi