fastoch13

Untitled

Jan 13th, 2025
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.52 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. # Redirection des erreurs vers le fichier de log
  13. exec 2>>"$LOG_FILE"
  14.  
  15. log "Démarrage du script 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é par l'utilisateur."
  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="169.254.200.200"
  63. DEFAULT_SUBNET_MASK="255.255.0.0"
  64. DEFAULT_GATEWAY="169.254.1.1"
  65. DEFAULT_DNS1="10.34.52.9"
  66. DEFAULT_DNS2="10.34.52.13"
  67. DEFAULT_HOMEPAGE="/home/siindus/Documents/instructions.html"
  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. # Boucle principale pour l'interface
  93. while true; do
  94. if [ "$DHCP" = "TRUE" ]; then
  95. config_values=$(yad --form --title="Configuration Avancée" --fixed --center --undecorated --skip-taskbar --ontop \
  96. --text="Mode DHCP activé" --text-align=center \
  97. --field="Nom de la machine" "$MACHINE_NAME" \
  98. --field="Adresse IP":RO "$IP_ADDRESS" \
  99. --field="Masque de sous-réseau":RO "$SUBNET_MASK" \
  100. --field="Gateway":RO "$GATEWAY" \
  101. --field="DNS1":RO "$DNS1" \
  102. --field="DNS2":RO "$DNS2" \
  103. --field="Homepage URL" "$HOMEPAGES" \
  104. --field="Activer DHCP:CHK" "$DHCP")
  105. else
  106. config_values=$(yad --form --title="Configuration Avancée" --fixed --center --undecorated --skip-taskbar --ontop \
  107. --text="Mode Statique" --text-align=center \
  108. --field="Nom de la machine" "$MACHINE_NAME" \
  109. --field="Adresse IP" "$IP_ADDRESS" \
  110. --field="Masque de sous-réseau" "$SUBNET_MASK" \
  111. --field="Gateway" "$GATEWAY" \
  112. --field="DNS1" "$DNS1" \
  113. --field="DNS2" "$DNS2" \
  114. --field="Homepage URL" "$HOMEPAGES" \
  115. --field="Activer DHCP:CHK" "$DHCP")
  116. fi
  117.  
  118. if [ $? -ne 0 ] || [ -z "$config_values" ]; then
  119. log "Configuration annulée par l'utilisateur."
  120. exit 1
  121. fi
  122.  
  123. IFS="|" read -r machine_name ip_address subnet_mask gateway dns1 dns2 homepages dhcp <<< "$config_values"
  124.  
  125. if [ "$DHCP" != "$dhcp" ]; then
  126. DHCP="$dhcp"
  127. continue
  128. fi
  129.  
  130. if [ "$dhcp" = "FALSE" ]; then
  131. if [ -z "$machine_name" ] || [ -z "$ip_address" ]; then
  132. yad --error --title="Erreur" --text="Tous les champs doivent être remplis." --button="OK:1" --undecorated --skip-taskbar --ontop
  133. log "Champs requis manquants"
  134. continue
  135. fi
  136. fi
  137. break
  138. done
  139.  
  140. log "Les informations réseau ont été validées"
  141.  
  142. echo "$SUDO_PASSWORD" | sudo -S hostnamectl set-hostname "$machine_name"
  143. log "Nom de la machine configuré : $machine_name"
  144.  
  145. for iface in $(ifconfig | grep -o "^[a-z0-9]*" | grep -v "lo"); do
  146. if [ "$dhcp" = "TRUE" ]; then
  147. sudo dhclient "$iface"
  148. log "DHCP activé pour $iface"
  149. else
  150. sudo ifconfig "$iface" "$ip_address" netmask "$subnet_mask" up
  151. sudo route add default gw "$gateway"
  152. log "Configuration statique appliquée : $iface - $ip_address/$subnet_mask"
  153. fi
  154. done
  155.  
  156. cat <<EOF > "$CONFIG_FILE"
  157. MACHINE_NAME="$machine_name"
  158. IP_ADDRESS="$ip_address"
  159. SUBNET_MASK="$subnet_mask"
  160. GATEWAY="$gateway"
  161. DNS1="$dns1"
  162. DNS2="$dns2"
  163. HOMEPAGES="$homepages"
  164. DHCP="$dhcp"
  165. EOF
  166.  
  167. log "Configuration sauvegardée dans $CONFIG_FILE"
  168.  
  169. DISPLAY=:0 nohup bash /home/siindus/Documents/kiosk_start.sh >> "$LOG_FILE" 2>&1 &
  170. log "Script de kiosk démarré"
  171.  
Advertisement
Add Comment
Please, Sign In to add comment