304 lines
8.2 KiB
Bash
304 lines
8.2 KiB
Bash
#!/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
|
|
</dev/urandom tr -dc "$specials$uppercase$lowercase$numbers"| fold -w20 | head -5
|
|
line
|
|
}
|
|
|
|
|
|
|
|
# Declaration of the "custom" function
|
|
function custom() {
|
|
|
|
|
|
|
|
# Number of characters
|
|
while true; do
|
|
read -p "> 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() {
|
|
</dev/urandom tr -dc "$varspe$varupp$varlow$varnum"| fold -w$nb1 | head -$nb2
|
|
}
|
|
|
|
|
|
|
|
# Export
|
|
while true; do
|
|
read -p "> 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
|
|
|