+bashrc.d +network.sh
This commit is contained in:
parent
ba20d0e671
commit
9b3ec9abc9
3 changed files with 222 additions and 0 deletions
18
bashrc.d/README.md
Normal file
18
bashrc.d/README.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Snippets pour Bash
|
||||||
|
|
||||||
|
## Mise en place
|
||||||
|
Ajouter ce petit bout de code dans votre ~/.bashrc :
|
||||||
|
```
|
||||||
|
# Vérifier si le répertoire ~/.bashrc.d existe
|
||||||
|
if [ -d "$HOME/.bashrc.d" ]; then
|
||||||
|
# Boucler sur chaque fichier dans ~/.bashrc.d
|
||||||
|
for file in "$HOME/.bashrc.d/"*; do
|
||||||
|
# Vérifier si c'est un fichier lisible
|
||||||
|
if [ -r "$file" ]; then
|
||||||
|
# Exécuter le fichier
|
||||||
|
. "$file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
92
bashrc.d/networks.sh
Normal file
92
bashrc.d/networks.sh
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Définir les réseaux à exclure (séparés par des virgules)
|
||||||
|
netexclude="10.9.9.0/24,127.0.0.0/8,192.168.122.0/24"
|
||||||
|
|
||||||
|
# Convertir la liste des exclusions en un tableau
|
||||||
|
IFS=',' read -r -a exclude_array <<< "$netexclude"
|
||||||
|
|
||||||
|
# Fonction pour vérifier si une IP est dans la liste d'exclusions
|
||||||
|
function is_excluded {
|
||||||
|
local ip=$1
|
||||||
|
local ipnum
|
||||||
|
ipnum=$(printf "%d" "$(echo "$ip" | awk -F. '{ print ($1 * 16777216) + ($2 * 65536) + ($3 * 256) + $4 }')")
|
||||||
|
|
||||||
|
for net in "${exclude_array[@]}"; do
|
||||||
|
IFS='/' read -r net_addr net_mask <<< "$net"
|
||||||
|
local netnum
|
||||||
|
netnum=$(printf "%d" "$(echo "$net_addr" | awk -F. '{ print ($1 * 16777216) + ($2 * 65536) + ($3 * 256) + $4 }')")
|
||||||
|
local mask
|
||||||
|
mask=$(( 0xFFFFFFFF << (32 - net_mask) ))
|
||||||
|
|
||||||
|
if (( (ipnum & mask) == (netnum & mask) )); then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Récupérer les interfaces réseau actives
|
||||||
|
interfaces=$(ip -o link show | awk -F': ' '{print $2}')
|
||||||
|
|
||||||
|
# Définir les variables pour les réseaux
|
||||||
|
declare -A net_info
|
||||||
|
net_count=0
|
||||||
|
|
||||||
|
for intf in $interfaces; do
|
||||||
|
# Obtenir l'adresse IP de l'interface
|
||||||
|
ip_addr=$(ip -o -4 addr list $intf | awk '{print $4}')
|
||||||
|
ip_only=$(echo $ip_addr | cut -d/ -f1)
|
||||||
|
|
||||||
|
# Vérifier si l'adresse IP est dans la liste des exclusions
|
||||||
|
if is_excluded "$ip_only"; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z $ip_addr ]]; then
|
||||||
|
net_count=$((net_count + 1))
|
||||||
|
net_info["net${net_count}_ip"]=$ip_only
|
||||||
|
net_info["net${net_count}_mask"]=$(ip -o -4 addr show $intf | awk '{print $4}' | cut -d/ -f2)
|
||||||
|
net_info["net${net_count}_gw"]=$(ip route | grep -w "$intf" | grep -oP 'via \K[^ ]+')
|
||||||
|
net_info["net${net_count}_net"]=$(ip route | grep -w "$intf" | grep -oP '\b(\d{1,3}\.){3}\d{1,3}/\d{1,2}\b')
|
||||||
|
|
||||||
|
if [[ $net_count -ge 4 ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Afficher les résultats et définir les variables globales
|
||||||
|
for i in $(seq 1 $net_count); do
|
||||||
|
echo "Réseau $i:"
|
||||||
|
echo "IP: ${net_info[net${i}_ip]}"
|
||||||
|
echo "Masque: ${net_info[net${i}_mask]}"
|
||||||
|
echo "Passerelle: ${net_info[net${i}_gw]}"
|
||||||
|
echo "Réseau: ${net_info[net${i}_net]}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
export "net${i}ip=${net_info[net${i}_ip]}"
|
||||||
|
export "net${i}mask=${net_info[net${i}_mask]}"
|
||||||
|
export "net${i}gw=${net_info[net${i}_gw]}"
|
||||||
|
export "net${i}net=${net_info[net${i}_net]}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Définir les variables globales
|
||||||
|
if [[ ! -z ${net_info[net1_ip]} ]]; then
|
||||||
|
export net1=${net_info[net1_ip]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z ${net_info[net2_ip]} ]]; then
|
||||||
|
export net2=${net_info[net2_ip]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z ${net_info[net3_ip]} ]]; then
|
||||||
|
export net3=${net_info[net3_ip]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z ${net_info[net4_ip]} ]]; then
|
||||||
|
export net4=${net_info[net4_ip]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "DEBUG net1=$net1"
|
||||||
|
echo "DEBUG net2=$net2"
|
112
tvtui/tvtui.sh
Executable file
112
tvtui/tvtui.sh
Executable file
|
@ -0,0 +1,112 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fichier CSV contenant les données des comptes
|
||||||
|
CSV_FILE="$HOME/Sync/BContact/tv_history.csv"
|
||||||
|
|
||||||
|
# Vérifie si le fichier CSV existe, sinon le crée avec des en-têtes
|
||||||
|
if [[ ! -f "$CSV_FILE" ]]; then
|
||||||
|
echo "name,tv_id,tv_pwd" > "$CSV_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Personnalisation des couleurs de whiptail
|
||||||
|
export NEWT_COLORS='
|
||||||
|
root=,black
|
||||||
|
window=white,black
|
||||||
|
border=white,black
|
||||||
|
title=blue,black
|
||||||
|
compactbutton=white,black
|
||||||
|
button=blue,black
|
||||||
|
textbox=white,black
|
||||||
|
listbox=white,black
|
||||||
|
actlistbox=blue,black
|
||||||
|
sellistbox=blue,black
|
||||||
|
actsellistbox=blue,black
|
||||||
|
'
|
||||||
|
|
||||||
|
# Fonction pour afficher un menu
|
||||||
|
show_menu() {
|
||||||
|
MENU_ITEMS=("1" "Ajouter" "2" "Consulter" "3" "Supprimer")
|
||||||
|
CHOICE=$(whiptail --title "TeamViewer TUI" --menu "Que voulez-vous faire?" 15 50 8 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
case $CHOICE in
|
||||||
|
1) add_account ;;
|
||||||
|
2) choose_account ;;
|
||||||
|
3) delete_account ;;
|
||||||
|
*) exit 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour choisir un compte et afficher les informations
|
||||||
|
choose_account() {
|
||||||
|
# Lecture des noms de comptes à partir du fichier CSV, en ignorant la première ligne (en-tête)
|
||||||
|
ACCOUNT_NAMES=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1)
|
||||||
|
|
||||||
|
# Préparation de la liste pour whiptail
|
||||||
|
MENU_ITEMS=()
|
||||||
|
INDEX=1
|
||||||
|
while IFS= read -r account; do
|
||||||
|
MENU_ITEMS+=("$INDEX" "$account")
|
||||||
|
INDEX=$((INDEX + 1))
|
||||||
|
done <<< "$ACCOUNT_NAMES"
|
||||||
|
|
||||||
|
# Affichage de la liste des comptes avec whiptail
|
||||||
|
ACCOUNT_INDEX=$(whiptail --title "TOTP TUI" --menu "Compte :" 25 50 15 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
# Si l'utilisateur annule, retourner au menu principal
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
show_menu
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Récupérer les informations du compte sélectionné, en ignorant la première ligne (en-tête)
|
||||||
|
LINE=$(tail -n +2 "$CSV_FILE" | sed -n "${ACCOUNT_INDEX}p")
|
||||||
|
IFS=',' read -r name tv_id tv_pwd <<< "$LINE"
|
||||||
|
|
||||||
|
# Affichage des informations du compte sélectionné
|
||||||
|
whiptail --title "Informations du Compte" --msgbox "Nom: $name\nID: $tv_id\nMot de passe: $tv_pwd" 15 50
|
||||||
|
show_menu
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour ajouter un compte
|
||||||
|
add_account() {
|
||||||
|
name=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez le nom du compte:" 10 60 3>&1 1>&2 2>&3)
|
||||||
|
tv_id=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez l'ID TeamViewer:" 10 60 3>&1 1>&2 2>&3)
|
||||||
|
tv_pwd=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez le mot de passe TeamViewer:" 10 60 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
# Ajouter l'entrée au fichier CSV
|
||||||
|
echo "$name,$tv_id,$tv_pwd" >> "$CSV_FILE"
|
||||||
|
|
||||||
|
whiptail --title "Succès" --msgbox "Le compte a été ajouté avec succès!" 10 60
|
||||||
|
show_menu
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction pour supprimer un compte
|
||||||
|
delete_account() {
|
||||||
|
# Lecture des noms de comptes à partir du fichier CSV, en ignorant la première ligne (en-tête)
|
||||||
|
ACCOUNT_NAMES=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1)
|
||||||
|
|
||||||
|
# Préparation de la liste pour whiptail
|
||||||
|
MENU_ITEMS=()
|
||||||
|
INDEX=1
|
||||||
|
while IFS= read -r account; do
|
||||||
|
MENU_ITEMS+=("$INDEX" "$account")
|
||||||
|
INDEX=$((INDEX + 1))
|
||||||
|
done <<< "$ACCOUNT_NAMES"
|
||||||
|
|
||||||
|
# Affichage de la liste des comptes avec whiptail
|
||||||
|
ACCOUNT_INDEX=$(whiptail --title "Supprimer un Compte" --menu "Choisissez un compte à supprimer:" 25 50 15 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
# Si l'utilisateur annule, retourner au menu principal
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
show_menu
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Récupérer les informations du compte sélectionné, en ignorant la première ligne (en-tête)
|
||||||
|
sed -i "${ACCOUNT_INDEX}d" "$CSV_FILE"
|
||||||
|
|
||||||
|
whiptail --title "Succès" --msgbox "Le compte a été supprimé avec succès!" 10 60
|
||||||
|
show_menu
|
||||||
|
}
|
||||||
|
|
||||||
|
# Démarrage du script
|
||||||
|
show_menu
|
||||||
|
|
Loading…
Reference in a new issue