Skip to content

Instantly share code, notes, and snippets.

@gil-obradors
Last active September 28, 2019 15:05
Show Gist options
  • Save gil-obradors/1e9ea8f72c2069a83222 to your computer and use it in GitHub Desktop.
Save gil-obradors/1e9ea8f72c2069a83222 to your computer and use it in GitHub Desktop.
Configuracions especials meves
#!/bin/bash
[[ "$TRACE" ]] && { set -x; set -o functrace; }
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
logfile="/tmp/$(basename $0).$$.log"
exec > >(tee -ia $logfile)
exec 2> >(tee -ia $logfile >&2)
is_root_user() {
# Function to check that the effective user id of the user running
# the script is indeed that of the root user (0)
if [[ $EUID != 0 ]]; then
return 1
fi
return 0
}
if ! is_root_user; then
echo "ERROR: Hauries de ser root. Exiting..." 2>&1
echo 2>&1
exit 1
fi
apt-get install -y sudo
sudo apt-get update ; sudo apt-get -y upgrade ; sudo apt-get -y install figlet openssh-server fortune bash-completion ladvd fail2ban net-tools lsb-release vim net-tools curl
read -e -p "Vols instal·lar avahi-daemon (s)i/(n)o ? " YN
[[ $YN == "s" || $YN == "S" || $YN == "y" || $YN == "Y" ]] && sudo apt-get install avahi-daemon
read -e -p "Vols instal·lar update-motd (s)i/(n)o ? " YN
[[ $YN == "s" || $YN == "S" || $YN == "y" || $YN == "Y" ]] && (
##### update-motd #####
mkdir -p /etc/update-motd.d
sudo tee /etc/update-motd.d/10uname << 'EOF'
#!/bin/sh
uname -snrvm
EOF
sudo chmod a+x /etc/update-motd.d/10uname
sudo tee /etc/update-motd.d/11headers << 'EOF'
#!/bin/sh
#
# 00-header - create the header of the MOTD
# Copyright (c) 2013 Nick Charlton
# Copyright (c) 2009-2010 Canonical Ltd.
#
# Authors: Nick Charlton <hello@nickcharlton.net>
# Dustin Kirkland <kirkland@canonical.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
[ -r /etc/lsb-release ] && . /etc/lsb-release
if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
# Fall back to using the very slow lsb_release utility
DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi
figlet $(hostname)
printf "\n"
printf "Welcome to %s (%s).\n" "$DISTRIB_DESCRIPTION" "$(uname -r)"
printf "\n"
EOF
sudo chmod a+x /etc/update-motd.d/11headers
sudo tee /etc/update-motd.d/12sysinfo << 'EOF'
#!/bin/bash
#
# 10-sysinfo - generate the system information
# Copyright (c) 2013 Nick Charlton
#
# Authors: Nick Charlton <hello@nickcharlton.net>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
date=`date`
load=`cat /proc/loadavg | awk '{print $1}'`
root_usage=`df -h / | awk '/\// {print $(NF-1)}'`
memory_usage=`free -m | awk '/Mem:/ { total=$2 } /buffers\/cache/ { used=$3 } END { printf("%3.1f%%", used/total*100)}'`
swap_usage=`free -m | awk '/Swap/ { printf("%3.1f%%", "exit !$2;$3/$2*100") }'`
users=`users | wc -w`
time=`uptime | grep -ohe 'up .*' | sed 's/,/\ hours/g' | awk '{ printf $2" "$3 }'`
processes=`ps aux | wc -l`
ip=`ifconfig $(route | grep default | awk '{ print $8 }') | grep "inet " | awk '{print $2}'`
echo "System information as of: $date"
echo
printf "System load:\t%s\tIP Address:\t%s\n" $load $ip
printf "Memory usage:\t%s\tSystem uptime:\t%s\n" $memory_usage "$time"
printf "Usage on /:\t%s\tSwap usage:\t%s\n" $root_usage $swap_usage
printf "Local Users:\t%s\tProcesses:\t%s\n" $users $processes
echo
EOF
sudo chmod a+x /etc/update-motd.d/12sysinfo
sudo tee /etc/update-motd.d/20footer << 'EOF'
#!/bin/sh
#
# 90-footer - write the admin's footer to the MOTD
# Copyright (c) 2013 Nick Charlton
# Copyright (c) 2009-2010 Canonical Ltd.
#
# Authors: Nick Charlton <hello@nickcharlton.net>
# Dustin Kirkland <kirkland@canonical.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
[ -f /etc/motd.tail ] && cat /etc/motd.tail || true
EOF
chmod a+x /etc/update-motd.d/20footer
[ -f /etc/motd.tail ] && mv /etc/motd /etc/motd.old
rm /etc/motd
ln -s /var/run/motd /etc/motd
)
##########SSH Keys
read -e -p "ssh keys de gil (s)i/(n)o ? " YN
[[ $YN == "s" || $YN == "S" || $YN == "y" || $YN == "Y" ]] && (
[ ! -d ~/.ssh ] && mkdir -p ~/.ssh
sudo tee -a ~/.ssh/authorized_keys << EOF
$(curl https://github.com/gil-obradors.keys)
EOF
)
########## LOCALES and TIME
read -e -p "Vols configurar locales i temps (s)i/(n)o ? " YN
[[ $YN == "s" || $YN == "S" || $YN == "y" || $YN == "Y" ]] && (
sudo echo "Europe/Madrid" > /etc/timezone && sudo dpkg-reconfigure -f noninteractive tzdata
sudo sed -i -e 's/# ca_ES.UTF-8 UTF-8/ca_ES.UTF-8 UTF-8/' /etc/locale.gen
sudo sed -i -e 's/# es_ES.UTF-8 UTF-8/es_ES.UTF-8 UTF-8/' /etc/locale.gen
sudo sed -i -e 's/# en_GB.UTF-8 UTF-8/en_GB.UTF-8 UTF-8/' /etc/locale.gen
sudo dpkg-reconfigure -fnoninteractive locales
sudo echo "LANG=ca_ES.UTF-8" > /etc/default/locale
)
## root logins
sed -i -e's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
########## bash completion ssh and scp
read -e -p "Vols instal·lar bash completion a SSH host (s)i/(n)o ? " YN
[[ $YN == "s" || $YN == "S" || $YN == "y" || $YN == "Y" ]] && (
sudo tee /etc/bash_completion.d/ssh << 'EOF'
_ssh()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(grep '^Host' ~/.ssh/config ~/.ssh/config.d/* 2>/dev/null | grep -v '[?*]' | cut -d ' ' -f 2-)
COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
return 0
}
complete -F _ssh ssh
EOF
[[ -f ~/.ssh/config ]] && sed -i '1s/^/HashKnownHosts no/' ~/.ssh/config || echo "HashKnownHosts no" > ~/.ssh/config
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment