Bonsoir, aujourd’hui j’ai décidé de vous partager quelques unes des fonctions bash que j’utilise dans mes scripts shell. Pour chacune je vous dit ce qu’elle fait. Il s’agit de microfonctions simples à comprendre et modifier si besoin. Le fichier complet contenant les fonctions est également téléchargeable depuis la page contributions.
scpcopy : Cette fonction bash permet d’effectuer une copie au travers de SCP tout en supportant en port ssh exotique :
function scpcopy()
{
host_ip="$1"
scpuser="$2"
scp_port="$3"
file2cp="$4"
dir2cp="$5"
scp -oPort="$scp_port" "$file2cp" "$scpuser"@"$host_ip":"$dir2cp"
}
remotereplace : Cette fonction bash permet d’effectuer un remplacement via sed au travers de ssh, tout en supportant un port ssh exotique :
function remotereplace()
{
host_ip="$1"
filetomodify="$2"
remoteport="$3"
src="$4"
dst="$5"
ssh -l root -p "$remoteport" "$host_ip" "sed -i \"s#$src#$dst#g\" $filetomodify"
}
remoteexec : Cette fonction bash permet l’execution d’une commande distante au travers de SSH en supportant un port SSH exotique.
function remoteexec()
{
host_ip="$1"
remoteport="$2"
command2exec="$3"
ssh -l root -p "$remoteport" "$host_ip" "$command2exec"
}
keygen : Cette fonction bash permet simplement de générer une paire de clef ssh à distance sur le compte root en supportant un port SSH exotique.
function keygen()
{
host_ip="$1"
ssh -l root -p "$ssh_port" "$host_ip" "ssh-keygen -t rsa -f /root/.ssh/id_rsa -q -P \"\""
}
renhost : Cette fonction bash permet de renommer un host linux (fonctionne sur Debian Stretch)
function renhost()
{
echo -e "${YELLOW} [WARNING]" "${NC} Hostname doesn't match the actual server host, changing server hostname in progress..."
oldhost=$(grep "$ip" /etc/hosts)
newhost="$ip $sxhostcode $hostcode"
$replacer $repoptions "s#$oldhost#$newhost#" /etc/hosts
$replacer $repoptions "s#$HOSTNAME#$hostcode#" /etc/hostname
$replacer $repoptions "s#root@$HOSTNAME#root@$hostcode#" /etc/ssh/*.pub
hostname "$hostcode"
hostnamectl set-hostname "$hostcode"
}
checkip : Cette fonction bash permet de vérifier si le contenu d’une variable correspond bien à une adresse IP.
function checkip()
{
if [[ "$1" =~ (([01]{,1}[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.([01]{,1}[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.([01]{,1}[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.([01]{,1}[0-9]{1,2}|2[0-4][0-9]|25[0-5]))$ ]];
then
echo -e "${GREEN} [ OK ]" "${NC} IP address $1 is ok, install in progress..."
else
echo -e "${RED} [ ERROR ]" "${NC} $1 is not an IP address"
exit 0
fi
}
checkfqdn : Cette fonction bash permet de vérifier qu’une variable correspond à un FQDN valide.
function checkfqdn()
{
result=$(echo "$1" | grep -P '(?=^.{1,254}$)(^(?>(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\.?)+(?:[a-zA-Z]{2,})$)')
if [[ -z "$result" ]]
then
echo -e "${RED} [ ERROR ]" "${NC} $1 is not a valid FQDN"
exit 0
else
echo -e "${GREEN} [ OK ]" "${NC} $1 is a valid FQDN, install in progress..."
fi
}
checkuid : Cette fonction bash permet de vérifier qu’un UID correspond à celui attendu.
function checkuid()
{
if [ "$UID" -ne "$1" ]
then
echo -e "${RED} [ ERROR ]" "${NC} you must be root to install the server"
exit 0
else
echo -e "${GREEN} [ OK ]" "${NC} UID ok, install in progress..."
fi
}
changuserpass : Cette fonction bash permet simplement de changer le mot de passe d’un utilisateur Linux.
function changeuserpass()
{
user_pass="$1"
user="$2"
echo -e "$user_pass\n$user_pass" |passwd "$user"
}
sslinstall : Cette fonction bash permet l’installation d’un certificat let’s encrypt pour un vhost. Note : un alias general vers /home/letsencrypt sur le serveur permet d’eviter des problemes de usecase client de type .htaccess ou autre.
function sslinstall()
{
admin_mail="$1"
domains="$2"
certbot -n --agree-tos --email "$admin_mail" --installer apache --webroot -w "/home/letsencrypt" --domains "$domains"
}
addmyuser : Cette fonction bash permet simplement l’ajout d’un nouvel utilisateur Linux.
function addmyuser()
{
user="$1"
directory="$2"
useradd "$user" --shell /bin/bash -g users -m -d "$directory"
}
deploy : cette fonction bash permet le téléchargement et l’installation de packages via apt.
downloader='apt -y -f --allow-unauthenticated -d install'
installer='apt -y -f --allow-unauthenticated install'
function deploy()
{
installer="$1"
packs="$2"
echo "Installing packages : $packages..."
$downloader $packs
$installer $packs
}
clean : cette fonction bash permet de vider puis d’effacer un fichier
function clean ()
{
file2clean=$1
> "$file2clean"
rm -f "$file2clean"
}
genpass : cette fonction bash permet de générer un mot de passe aléatoire en spécifiant le nombre de caractères attendus
function genpass()
{
charx="$1"
pwgen -A -B "$charx" 1
}
writefile : Cette fonction bash permet d’écrire dans un fichier avec 2 options : soit la création d’un nouveau fichier, soit le rajout de lignes dans un fichier.

Christophe Casalegno
​Vous pouvez me suivre sur : Twitter | Facebook | Linkedin | Telegram | Youtube

Laisser un commentaire