#!/bin/bash # Color variables neutre='\e[0;m' jaune='\e[1;33m' bleuclair='\e[1;34m' vertclair='\e[1;32m' rouge='\e[1;31m' # Declaration of the variable "line" function line() { echo -e "$vertclair--------------------$neutre" } # Declaration of the variable "customline" function customline() { printf -v ligne '%*s' "$nb1" '' ; echo -e "$vertclair${ligne// /-}$neutre" } # Name and license echo echo -e "▄▖ ▄▖ ▗ " echo -e "▙▌▀▌▛▘▛▘▄▖▌ █▌▛▌█▌▛▘▀▌▜▘▛▌▛▘" echo -e "▌ █▌▄▌▄▌ ▙▌▙▖▌▌▙▖▌ █▌▐▖▙▌▌$rouge v2.0.0 $neutre" echo echo -e "$jaune╭ License ─────────────────────────────╮" echo -e "│ $neutre Coded by Willy from Self IT Deploy $jaune │" echo -e "│ $neutre CC BY-NC-SA 4.0 $jaune │" echo -e "╰──────────────────────────────────────╯ $neutre" echo # Character variables lowercase='a-z' uppercase='A-Z' numbers='0-9' specials='!@#$%&*=|<>~()_{}[]+.' # Declaration of the "default" function function default() { line Number of characters ? ($(echo -e $bleuclair"default 20"$neutre)) " nb1 if [ "$nb1" = "" ]; then nb1=20 break elif [[ ! "$nb1" =~ ^[0-9]+$ ]]; then echo echo "Invalid data" echo elif [[ "$nb1" -le 0 ]]; then echo echo "Invalid data" echo else break fi done # Number of iterations while true; do read -p "> Number of iterations ? ($(echo -e $bleuclair"default 5"$neutre)) " nb2 if [ "$nb2" = "" ]; then nb2=5; break elif [[ ! "$nb2" =~ ^[0-9]+$ ]]; then echo echo "Invalid data" echo elif [[ "$nb2" -le 0 ]]; then echo echo "Invalid data" echo else break fi done while true; do # Enable lowercase while true; do read -p "> Enable lowercase ? ($(echo -e $bleuclair"Y/n"$neutre)) " low if [ "$low" = "Y" ] || [ "$low" = "y" ] || [ "$low" = "" ]; then varlow=$lowercase break elif [ "$low" = "N" ] || [ "$low" = "n" ]; then varlow="" break else echo echo "Invalid data" echo fi done # Enable uppercase while true; do read -p "> Enable uppercase ? ($(echo -e $bleuclair"Y/n"$neutre)) " upp if [ "$upp" = "Y" ] || [ "$upp" = "y" ] || [ "$upp" = "" ]; then varupp=$uppercase break elif [ "$upp" = "N" ] || [ "$upp" = "n" ]; then varupp="" break else echo echo "Invalid data" echo fi done # Enable numbers while true; do read -p "> Enable numbers ? ($(echo -e $bleuclair"Y/n"$neutre)) " num if [ "$num" = "Y" ] || [ "$num" = "y" ] || [ "$num" = "" ]; then varnum=$numbers break elif [ "$num" = "N" ] || [ "$num" = "n" ]; then varnum="" break else echo echo "Invalid data" echo fi done # Enable specials while true; do read -p "> Enable specials ? ($(echo -e $bleuclair"Y/n"$neutre)) " spe if [ "$spe" = "Y" ] || [ "$spe" = "y" ] || [ "$spe" = "" ]; then varspe=$specials break elif [ "$spe" = "N" ] || [ "$spe" = "n" ]; then varspe="" break else echo echo "Invalid data" echo fi done if [ -n "${varlow}" ] || [ -n "${varupp}" ] || [ -n "${varnum}" ] || [ -n "${varspe}" ]; then break else echo echo "No character was selected" echo fi done # Declaration of the "customgenerate" function function customgenerate() { Export generation ? ($(echo -e $bleuclair"y/N"$neutre)) " exp if [ "$exp" = "N" ] || [ "$exp" = "n" ] || [ "$exp" = "" ]; then echo customline customgenerate customline break elif [ "$exp" = "Y" ] || [ "$exp" = "y" ]; then echo read -p "> Choose location ? (Relative/Absolute ex: ./list.txt) " location echo customline customgenerate | tee -a $location customline break else echo echo "Invalid data" echo fi done } # Declaration of the "help" function function help() { cat << EOF ╭─────────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ │ ▄▖ ▄▖ ▗ │ │ ▙▌▀▌▛▘▛▘▄▖▌ █▌▛▌█▌▛▘▀▌▜▘▛▌▛▘ │ │ ▌ █▌▄▌▄▌ ▙▌▙▖▌▌▙▖▌ █▌▐▖▙▌▌ v2.0.0 │ │ │ │ ╭ License ─────────────────────────────╮ │ │ │ Coded by Willy from Self IT Deploy │ │ │ │ CC BY-NC-SA 4.0 │ │ │ ╰──────────────────────────────────────╯ │ │ │ │ > List of available characters │ │ lowercase "a-z" │ │ uppercase "A-Z" │ │ numbers "0-9" │ │ specials "!@#$%&*=|<>~()_{}[]+." │ │ │ │ > Choice 1 - Default generation │ │ Default generation of 5 iterations of 20 characters, │ │ including all supported characters. │ │ │ │ > Choice 2 - Custom generation │ │ Custom generation with choice of iteration quantities and characters, │ │ the possibility to activate or not a character type as well as export to an external file. │ │ │ │ Press enter for default choice. │ │ If (Y/n) then, default yes (accept Y & y). │ │ If (y/N) then, default no (accept N & n). │ │ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ EOF } # Menu principal while true; do echo echo -e "1 - Default generation" echo -e "2 - Custom generation" echo -e "3 - Help" echo -e "4 - Exit" echo read -p "Choice your option ? " choice echo case "$choice" in 1) default ;; 2) custom ;; 3) help ;; 4) exit 1 ;; esac done