pretest
This commit is contained in:
commit
af274aea3e
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"editor.fontSize": 14,
|
||||||
|
"terminal.integrated.fontSize": 14,
|
||||||
|
"window.zoomLevel": 1.4,
|
||||||
|
}
|
||||||
173
gest-hosts.sh
Executable file
173
gest-hosts.sh
Executable file
@ -0,0 +1,173 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
############################################################
|
||||||
|
# Decription: Preinst linux GMo cloned server from VMWare WS
|
||||||
|
# Author: Gilles Mouchet (gilles.mouchet@gmail.com)
|
||||||
|
# Creation Date: 29-Aug-2021
|
||||||
|
# Version: 3.1
|
||||||
|
|
||||||
|
#add entry
|
||||||
|
#modify entry
|
||||||
|
#delete entry
|
||||||
|
#display entry
|
||||||
|
|
||||||
|
version="0.1"
|
||||||
|
#functions
|
||||||
|
# usage
|
||||||
|
usage() {
|
||||||
|
cat << EOF
|
||||||
|
Usage: ./gest-host.sh options
|
||||||
|
Manage host file
|
||||||
|
Options:
|
||||||
|
-a, --add an entry (-i -n mandatory for this option)
|
||||||
|
-p, --print display all entry
|
||||||
|
-r, --remove remove an entry
|
||||||
|
-i, --ip last two or three digit of ip address
|
||||||
|
-H, --host host name
|
||||||
|
-h, --help display this help text
|
||||||
|
-v, --version version
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# check error
|
||||||
|
check_error()
|
||||||
|
{
|
||||||
|
if [ "$1" -ne "0" ]; then
|
||||||
|
echo "[ERROR] - $2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# add host
|
||||||
|
add_host()
|
||||||
|
{
|
||||||
|
# check if ip already exit
|
||||||
|
echo "toto"
|
||||||
|
}
|
||||||
|
|
||||||
|
# db name
|
||||||
|
db_name=hosts.sqlite
|
||||||
|
|
||||||
|
# mapping from long options to short options
|
||||||
|
for arg in "$@"; do
|
||||||
|
shift
|
||||||
|
case "$arg" in
|
||||||
|
"--add") set -- "$@" "-a" ;;
|
||||||
|
"--ip") set -- "$@" "-i" ;;
|
||||||
|
"--host") set -- "$@" "-H" ;;
|
||||||
|
"--remove") set -- "$@" "-r" ;;
|
||||||
|
"--update") set -- "$@" "-u" ;;
|
||||||
|
"--domain") set -- "$@" "-d" ;;
|
||||||
|
"--help") set -- "$@" "-h" ;;
|
||||||
|
"--version") set -- "$@" "-v" ;;
|
||||||
|
*) set -- "$@" "$arg"
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Utilisation de getopts pour les options courtes
|
||||||
|
while getopts ":a:i:rud:hv" opt; do
|
||||||
|
option=${opt}
|
||||||
|
case ${opt} in
|
||||||
|
a)
|
||||||
|
action=add
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
domain=$OPTARG
|
||||||
|
case ${domain} in
|
||||||
|
gmetech.net)
|
||||||
|
ip_root=192.168.1.
|
||||||
|
;;
|
||||||
|
gmolab.net)
|
||||||
|
ip_root=172.31.10.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "[ERROR] - $domain is not valid"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
i)
|
||||||
|
ip_last_digit=$OPTARG
|
||||||
|
# check if it's a numbeer
|
||||||
|
re='^[0-9]+$'
|
||||||
|
if ! [[ $ip_last_digit =~ $re ]] ; then
|
||||||
|
echo "[ERROR] - Not a number"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ $ip_last_digit -le 4 || $ip_last_digit -ge 255 ]]; then
|
||||||
|
echo "Bad ip"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
ip=${ip_root}${ip_last_digit}
|
||||||
|
fi
|
||||||
|
|
||||||
|
;;
|
||||||
|
r)
|
||||||
|
action=remove
|
||||||
|
;;
|
||||||
|
u)
|
||||||
|
action=update
|
||||||
|
;;
|
||||||
|
h)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
f)
|
||||||
|
file=$OPTARG
|
||||||
|
;;
|
||||||
|
v)
|
||||||
|
cat << EOF
|
||||||
|
gest-hosts $version
|
||||||
|
Copyright (C) 2021-`date +"%Y"` - GMo Free Software.
|
||||||
|
Written by Gilles Mouchet (gilles.mouchet@gmail.com)
|
||||||
|
EOF
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
echo "Option invalide: -$OPTARG" >&2
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
echo "L'option -$OPTARG requiert un argument." >&2
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND -1))
|
||||||
|
|
||||||
|
# resume
|
||||||
|
echo "Domain = $domain"
|
||||||
|
echo "IP = $ip"
|
||||||
|
|
||||||
|
# Exemple de traitement des options
|
||||||
|
#if [ "$verbose" = true ]; then
|
||||||
|
# echo "Mode verbeux activé"
|
||||||
|
#fi
|
||||||
|
|
||||||
|
#if [ -n "$file" ]; then
|
||||||
|
# echo "Fichier spécifié: $file"
|
||||||
|
#fi
|
||||||
|
|
||||||
|
# Le reste de votre script ici...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# check if template exist
|
||||||
|
|
||||||
|
if [[ -z "${domain}" && "${option}" != "h" && "${option}" != "v" ]]; then
|
||||||
|
echo "Domain is missing (-d)"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create sqlite db if not existe
|
||||||
|
if [ ! -f $db_name ]; then
|
||||||
|
sqlite3 $db_name "create table hosts (id INTEGER PRIMARY KEY,ip TEXT,host TEXT,fqdn TEXT);"
|
||||||
|
check_error $? "create database $db_name"
|
||||||
|
sqlite3 $db_name "INSERT INTO hosts (ip,host,fqdn) VALUES ('192.168.1.1','router','router.gmetech.net')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# select domain
|
||||||
|
|
||||||
|
|
||||||
|
#echo $domain
|
||||||
BIN
hosts.sqlite
Normal file
BIN
hosts.sqlite
Normal file
Binary file not shown.
58
test.sh
Executable file
58
test.sh
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fonction pour afficher l'aide
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 [OPTIONS]"
|
||||||
|
echo "Options:"
|
||||||
|
echo " -h, --help Affiche ce message d'aide"
|
||||||
|
echo " -f, --file FILE Spécifie le fichier à utiliser"
|
||||||
|
echo " -v, --verbose Active le mode verbeux"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Mapping des options longues vers des options courtes
|
||||||
|
for arg in "$@"; do
|
||||||
|
shift
|
||||||
|
case "$arg" in
|
||||||
|
"--help") set -- "$@" "-h" ;;
|
||||||
|
"--file") set -- "$@" "-f" ;;
|
||||||
|
"--verbose") set -- "$@" "-v" ;;
|
||||||
|
*) set -- "$@" "$arg"
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Utilisation de getopts pour les options courtes
|
||||||
|
while getopts ":hf:v" opt; do
|
||||||
|
case ${opt} in
|
||||||
|
h)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
f)
|
||||||
|
file=$OPTARG
|
||||||
|
;;
|
||||||
|
v)
|
||||||
|
verbose=true
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
echo "Option invalide: -$OPTARG" >&2
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
echo "L'option -$OPTARG requiert un argument." >&2
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND -1))
|
||||||
|
|
||||||
|
# Exemple de traitement des options
|
||||||
|
if [ "$verbose" = true ]; then
|
||||||
|
echo "Mode verbeux activé"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$file" ]; then
|
||||||
|
echo "Fichier spécifié: $file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Le reste de votre script ici...
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user