fastoch13

Untitled

Jan 13th, 2025
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Chemin du fichier de log et fichier de configuration
  4. LOG_FILE="/home/siindus/Documents/config_advanced_log.txt"
  5. CONFIG_FILE="/home/siindus/Documents/network_config.cfg"
  6.  
  7. # Fonction pour écrire des logs avec horodatage
  8. log() {
  9. echo "$(date "+[%Y-%m-%d %H:%M:%S]") $1" >> "$LOG_FILE"
  10. }
  11.  
  12. # Effacer le fichier de log précédent
  13. > "$LOG_FILE"
  14.  
  15. log "Démarrage de config_advanced.sh"
  16.  
  17. # Mot de passe sudo et mot de passe attendu
  18. SUDO_PASSWORD="polindus"
  19. EXPECTED_PASSWORD="polindus"
  20.  
  21. # Fonction pour convertir un masque en notation CIDR
  22. mask_to_prefix() {
  23. local mask=$1
  24. local prefix=0
  25. for octet in $(echo $mask | tr "." " "); do
  26. case $octet in
  27. 255) prefix=$((prefix + 8));;
  28. 254) prefix=$((prefix + 7));;
  29. 252) prefix=$((prefix + 6));;
  30. 248) prefix=$((prefix + 5));;
  31. 240) prefix=$((prefix + 4));;
  32. 224) prefix=$((prefix + 3));;
  33. 192) prefix=$((prefix + 2));;
  34. 128) prefix=$((prefix + 1));;
  35. 0) ;;
  36. *) log "Masque de sous-réseau invalide : $mask"; return 1;;
  37. esac
  38. done
  39. echo $prefix
  40. }
  41.  
  42. # Demander le mot de passe avec un champ de saisie sécurisé
  43. password=$(yad --entry --title="ACCES" \
  44. --text="Mot de passe Admin" --text-align=center \
  45. --hide-text --width=300 --height=100 --fixed --undecorated --skip-taskbar --ontop)
  46.  
  47. if [ $? -ne 0 ]; then
  48. log "Accès annulé."
  49. exit 0
  50. fi
  51.  
  52. if [ "$password" != "$EXPECTED_PASSWORD" ]; then
  53. yad --error --title="Erreur" --text="Mot de passe erroné." --button="OK:1" --undecorated --skip-taskbar --ontop
  54. log "Mot de passe erroné"
  55. exit 1
  56. fi
  57.  
  58. log "Mot de passe validé"
  59.  
  60. # Valeurs par défaut
  61. DEFAULT_MACHINE_NAME="Excellence"
  62. DEFAULT_IP_ADDRESS="192.168.1.100"
  63. DEFAULT_SUBNET_MASK="255.255.255.0"
  64. DEFAULT_GATEWAY="192.168.1.1"
  65. DEFAULT_DNS1="8.8.8.8"
  66. DEFAULT_DNS2="8.8.4.4"
  67. DEFAULT_HOMEPAGE="http://example.com"
  68. DEFAULT_DHCP="FALSE"
  69.  
  70. if [ -f "$CONFIG_FILE" ]; then
  71. source "$CONFIG_FILE"
  72. log "Chargement du fichier de configuration existant"
  73. else
  74. MACHINE_NAME="$DEFAULT_MACHINE_NAME"
  75. IP_ADDRESS="$DEFAULT_IP_ADDRESS"
  76. SUBNET_MASK="$DEFAULT_SUBNET_MASK"
  77. GATEWAY="$DEFAULT_GATEWAY"
  78. DNS1="$DEFAULT_DNS1"
  79. DNS2="$DEFAULT_DNS2"
  80. HOMEPAGES="$DEFAULT_HOMEPAGE"
  81. DHCP="$DEFAULT_DHCP"
  82. log "Utilisation des valeurs par défaut"
  83. fi
  84.  
  85. SUBNET_PREFIX=$(mask_to_prefix "$SUBNET_MASK")
  86. if [ $? -ne 0 ]; then
  87. log "Erreur lors de la conversion du masque en préfixe."
  88. exit 1
  89. fi
  90. log "Préfixe de sous-réseau calculé : /$SUBNET_PREFIX"
  91.  
  92. while true; do
  93. # Afficher le formulaire YAD
  94. config_values=$(yad --form --title="Configuration Avancée du Réseau" --fixed --center --undecorated --skip-taskbar --ontop \
  95. --text="Configuration réseau avancée" --text-align=center \
  96. --field="Nom de la machine" "$MACHINE_NAME" \
  97. --field="Adresse IP" "$IP_ADDRESS" \
  98. --field="Masque de sous-réseau" "$SUBNET_MASK" \
  99. --field="Passerelle" "$GATEWAY" \
  100. --field="DNS1" "$DNS1" \
  101. --field="DNS2" "$DNS2" \
  102. --field="Homepage URL" "$HOMEPAGES" \
  103. --field="Activer DHCP:CHK" "$DHCP")
  104.  
  105. if [ $? -ne 0 ]; then
  106. log "Configuration annulée."
  107. exit 1
  108. fi
  109.  
  110. IFS="|" read -r machine_name ip_address subnet_mask gateway dns1 dns2 homepages dhcp <<< "$config_values"
  111.  
  112. if [ "$dhcp" = "FALSE" ]; then
  113. if [ -z "$machine_name" ] || [ -z "$ip_address" ] || [ -z "$subnet_mask" ] || [ -z "$gateway" ]; then
  114. yad --error --title="Erreur" --text="Tous les champs doivent être remplis." --button="OK:1" --undecorated --skip-taskbar --ontop
  115. log "Champs requis manquants"
  116. continue
  117. fi
  118. fi
  119. break
  120. done
  121.  
  122. log "Les paramètres réseau ont été validés"
  123.  
  124. echo "$SUDO_PASSWORD" | sudo -S hostnamectl set-hostname "$machine_name"
  125. if [ $? -ne 0 ]; then
  126. log "Erreur lors de la configuration du hostname."
  127. exit 1
  128. fi
  129. log "Nom de la machine défini : $machine_name"
  130.  
  131. for iface in $(ifconfig | grep -o "^[a-z0-9]*" | grep -v "lo"); do
  132. if [ "$dhcp" = "TRUE" ]; then
  133. sudo dhclient "$iface"
  134. log "DHCP activé pour $iface"
  135. else
  136. sudo ifconfig "$iface" "$ip_address" netmask "$subnet_mask" up
  137. sudo route add default gw "$gateway"
  138. log "Configuration statique appliquée : $iface - $ip_address/$subnet_mask"
  139. fi
  140. done
  141.  
  142. cat <<EOF > "$CONFIG_FILE"
  143. MACHINE_NAME="$machine_name"
  144. IP_ADDRESS="$ip_address"
  145. SUBNET_MASK="$subnet_mask"
  146. GATEWAY="$gateway"
  147. DNS1="$dns1"
  148. DNS2="$dns2"
  149. HOMEPAGES="$homepages"
  150. DHCP="$dhcp"
  151. EOF
  152.  
  153. log "Configuration sauvegardée dans $CONFIG_FILE"
  154.  
  155. DISPLAY=:0 nohup bash /home/siindus/Documents/kiosk_start.sh >> "$LOG_FILE" 2>&1 &
  156. log "Script de kiosk démarré"
  157.  
Advertisement
Add Comment
Please, Sign In to add comment