Skip to content

Instantly share code, notes, and snippets.

@sbnsec
Last active May 12, 2024 10:22
Show Gist options
  • Save sbnsec/e1057c692ed74ca0c028c376be4e76fa to your computer and use it in GitHub Desktop.
Save sbnsec/e1057c692ed74ca0c028c376be4e76fa to your computer and use it in GitHub Desktop.
init linux server
#/bin/bash
function info(){
local -r message="${1}"
echo -e "\033[1;36m[+] ${message}\033[0m" 2>&1
}
function check_sudo_and_run() {
# Vérifier si l'utilisateur a des droits sudo
if sudo -n true 2>/dev/null; then
echo "Vous avez les droits sudo. Exécution du script..."
else
echo "Droits sudo requis pour exécuter ce script. Veuillez ajoute rles droits sudo pour l'utilisateur."
exit 1
fi
}
# This script makes the nessary change to configure this devices to my tastes
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
trace(){
echo "# $*"
"$@"
}
function copy_vimrc_if_absent() {
FILE="$HOME/.vimrc"
if [ ! -f "$FILE" ]; then
info "Le fichier .vimrc n'a pas été trouvé dans $HOME. Copie en cours depuis $DIR..."
cp "$DIR/utils/.vimrc" "$HOME"
info ".vimrc copié avec succès dans $HOME."
else
info "Le fichier .vimrc existe déjà dans $HOME."
fi
}
check_pkg()
{
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $1|grep "install ok installed")
info "Checking for $1: $PKG_OK"
if [ "" == "$PKG_OK" ]; then
info "Not installed. Setting up $1"
trace sudo apt-get --force-yes --yes install $1
fi
}
update_issue_with_ips() {
message=""
issue_net_template="\l ---- \d \nUtilisateurs Connectés: \u \n"
message+=$issue_net_template
# Sauvegarder le fichier /etc/issue original
sudo cp /etc/issue /etc/issue.bak
# Obtenir la liste des interfaces réseau
interfaces=$(ip -o link show | awk -F': ' '{print $2}')
message+="IP de interface par default: \4\n"
# Parcourir chaque interface
for interface in $interfaces; do
# Vérifier si l'interface a une adresse IP
ip_address=$(ip -o -4 addr list $interface | awk '{print $4}' | cut -d/ -f1)
if [ ! -z "$ip_address" ]; then
# Ajouter la ligne pour l'interface dans /etc/issue
message+="IP de $interface: \4{$interface}\n" #>> /etc/issue
fi
done
echo -e $message | sudo tee /etc/issue
}
function replace_nano_with_message() {
local script_content="#!/bin/bash
echo \"⚠️ ERREUR: 'nano' n'est PAS l'éditeur que vous cherchez ! ⚠️\"
echo \"⚠️ ERREUR: 'nano' n'est PAS l'éditeur que vous cherchez ! ⚠️\"
echo \"⚠️ ERREUR: 'nano' n'est PAS l'éditeur que vous cherchez ! ⚠️\"
echo \"⚠️ ERREUR: 'nano' n'est PAS l'éditeur que vous cherchez ! ⚠️\"
echo \"┌───────────────────────────────────────────┐\"
echo \"│ Oups ! Il semble que vous ayez tapé │\"
echo \"│ 'nano' par erreur. Ne vous inquiétez │\"
echo \"│ pas, c'est une erreur courante chez │\"
echo \"│ les apprentis sorciers de l'informatique. │\"
echo \"│ │\"
echo \"│ Les vrais magiciens utilisent 'vim', │\"
echo \"│ un éditeur plus puissant et magique │\"
echo \"└───────────────────────────────────────────┘\"
echo \"Quelques commandes de base pour démarrer avec vim :\"
echo \" vim <fichier> - Pour ouvrir un fichier\"
echo \" :q - Pour quitter\"
echo \" :q! - Pour quitter sans sauvegarder\"
echo \" :w - Pour sauvegarder\"
echo \" :wq ou :x - Pour sauvegarder et quitter\"
echo \" i - Pour passer en mode insertion\"
echo \" Esc - Pour revenir en mode normal\"
echo \"Amusez-vous bien avec vim ! 😎\""
# Écrivez le contenu dans /bin/nano (nécessite des droits sudo)
echo "$script_content" | sudo tee /bin/nano > /dev/null
# Rendre le nouveau 'nano' exécutable
sudo chmod +x /bin/nano
}
info "Verification que l'utilisateur a les droits sudo"
sleep 1
check_sudo_and_run
check_pkg vim
check_pkg tree
check_pkg git
check_pkg zsh
check_pkg curl
info "fix vimrc"
sleep 1
copy_vimrc_if_absent
# Appeler la fonction
info "Mise à jour /etc/issue avec les adresses IP des interfaces"
sleep 1
update_issue_with_ips
info "remove nano"
sleep 1
sudo apt purge -y nano
info "set message instead if nano"
sleep 1
replace_nano_with_message
wget https://raw.githubusercontent.com/sbnsec/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
export AUTO_INSTALL=y
export APPROVE_INSTALL=y
export APPROVE_IP=y
export IPV6_SUPPORT=n
export PORT_CHOICE=1
export ROTOCOL_CHOICE=1
export DNS=1
export COMPRESSION_ENABLED=n
export CUSTOMIZE_ENC=n
export CLIENT=clientname
export PASS=1
./openvpn-install.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment