#1 Le 24/08/2021, à 16:47
- denver
Script besoin d'aide pour une commande OUI/NON
Bonjour à tous !
Alors voila, je redécouvre Linux que j'avais abandonné depuis trop longtemps, et comme dis le proverbe c'est en shellan qu'on devient linuxien,donc je me suis mis à écrire des scripts.
J'ai fait un script de démarrage qui me couple le bluetoof, micro, webcam ; charge mes règles d'iptables et les test via nmap ; puis démarre mes programmes favoris (Firefox et mozzila)
Seulement voila, je voudrait pour rendre le tout bien jolie et compliquer, demander à l'utilisateur si il veux scanner le réseau via "nmap" ou si on zap cette opération, et avec les bout de code que je chine sur le net je n'arrive pas a écrire quelque chose de fonctionnel...
Pouvez vous m'aider s'il vous plaît ?
Voici le boit de mon script qui déconne :
############################
##### OUI / NON #####
############################
function reponse() {
if [ "$opinion"=OUI ]
then
echo -e "${jaunecligno}> TEST PAREFEU...${neutre}" # Message utilisateur
nmap -A 192.168.43.33 192.168.43.75 # Test des 'ports' hp-pavillon et du routeur de mon téléphone en conexion partager
echo -e "${vertclair}OK !${neutre}" # Message utilisateur
echo -e "" # Ligne vide
# echo -e 'la programmation sera présérvée\n'
reponse=Y ; echo $reponse
else # ne pas mixer les deux interfaces.
echo -e "${rose}ABANDON DES TESTS DU PAREFEU${neutre}"
killall nmap # Kill n'est plus nécessaire pour la fonction TimerOn lancé en tâche de fond.
# $! est le PID du dernier job lancé en tâche de fond.
fi
}
echo "Voulez vous vérifier les ports réseaux ?"
select opinion in OUI NON
do
case $opinion in
"OUI"|"NON") break;; # Laisser passer ceux qui répondent correctement à la question
*) continue;; # Au cas où des zozos tapent sur autre chose que 1 ou 2
esac
done
reponse
Et voici mon script en entier si besoin :
#!/bin/bash
####################################
##### Déffinition des couleurs #####
####################################
noir='\e[0;30m'
gris='\e[1;30m'
rougefonce='\e[0;31m'
rose='\e[1;31m'
vertfonce='\e[0;32m'
vertclair='\e[1;49;92m'
orange='\e[0;33m'
jaune='\e[1;33m'
bleufonce='\e[0;49;34m '
bleuclair='\e[1;34m'
violetfonce='\e[0;35m'
violetclair='\e[1;35m'
cyanfonce='\e[0;36m'
cyanclair='\e[1;36m'
grisclair='\e[0;37m'
blanc='\e[1;37m'
jaunegras='\e[1;49;93m'
jaunecligno="\e[5;49;93m"
neutre='\e[0;m'
neutrecligno='\e[5;49;37m'
###################
##### En tête #####
###################
echo -e " " # Ligne vide. La ligne suivante permet d'afficher du texte sur plusieurs lignes
echo -e "${bleufonce}\
##########################################
# Outil de démarrage #
# ===================== #
# Protection vie privé, Firewall #
##########################################${neutre}"
echo -e " " # Ligne vide
echo -e "${neutrecligno}Appuyez sur une touche pour démarrer.${neutre}" # Message blanc cllignotant
read -n1; # Attends que l'utilisateur face ENTRER CLAVIER
############################
# Invite des commandes #####
############################
echo -e "${rose}> COUPURE BLUETOUTH...${neutre}" # Couleur rouge : Message utilisateur et retour à couleur blanche
sudo systemctl stop bluetooth # Arrête le procesus bluetouth
echo -e "${vertclair}OK !${neutre}" # Message utilisateur
echo -e " " # Ligne vide
echo -e "${rose}> COUPURE MICRO...${neutre}" # Couleur rouge : Message utilisateur et retour à couleur blanche
amixer set Capture nocap # Mute micro via amixer
echo -e "${vertclair}OK !${neutre}" # Message utilisateur
echo -e " " # Ligne vide
echo -e "${rose}> COUPURE WEBCAM...${neutre}" # Couleur rouge : Message utilisateur et retour à couleur blanche
sudo rmmod -f uvcvideo # Mute micro via amixer
echo -e "${vertclair}OK !${neutre}" # Message utilisateur
echo -e "" # Ligne vide
echo -e "${rose}> ACTIVATION FIREWALL...${neutre}" # Couleur rouge : Message utilisateur et retour à couleur blanche
sudo /home/thibault/OS/SCRIPTS/./firewall.sh # SHELL firewall
sudo iptables -L -n -v # Affiches les règles du PARE FEU
echo -e "" # Ligne vide
############################
##### OUI / NON #####
############################
function reponse() {
if [ "$opinion"=OUI ]
then
echo -e "${jaunecligno}> TEST PAREFEU...${neutre}" # Message utilisateur
nmap -A 192.XXX.XX.XX 192.XXX.XX.XX # Test des 'ports' hp-pavillon et du routeur de mon téléphone en conexion partager
echo -e "${vertclair}OK !${neutre}" # Message utilisateur
echo -e "" # Ligne vide
# echo -e 'la programmation sera présérvée\n'
reponse=Y ; echo $reponse
else # ne pas mixer les deux interfaces.
echo -e "${rose}ABANDON DES TESTS DU PAREFEU${neutre}"
killall nmap # Kill n'est plus nécessaire pour la fonction TimerOn lancé en tâche de fond.
# $! est le PID du dernier job lancé en tâche de fond.
fi
}
echo "Voulez vous vérifier les ports réseaux ?"
select opinion in OUI NON
do
case $opinion in
"OUI"|"NON") break;; # Laisser passer ceux qui répondent correctement à la question
*) continue;; # Au cas où des zozos tapent sur autre chose que 1 ou 2
esac
done
reponse
# ################################################################################### ====>
echo -e "\n###################################################################################################\n" # Affiche ligne de #
echo -e ""
# Ligne vide
echo -e "${orange}> DEMARRAGE PROGAMMES...${neutre}" # Couleur ORANGE : Message utilisateur et retour à couleur blanche
# firefox & # Programme Firefox en back-ground (&=bg)
echo -e "${cyanclair}Firefox PID : $!${neutre}" # Contient le PID de la dernière commande lancée
# thunderbird &
echo -e "${cyanclair}Thunderbird PID : $!${neutre}" # Contient le PID de la dernière commande lancée # Programme Thunderbird en back-ground (&=bg)
# libreoffice -o '/home/thibault/Documents/Impôts & Budget Excell/Budget Mensuel/Budget 2021.ods' & # Programme Libre office BUDGET (fiance perso) en back-ground (&=bg)
echo -e "${cyanclair}Libre Office (Budget) PID : $! ${neutre}" # Contient le PID de la dernière commande lancée
sleep 10 # Attendre 10 secondes (le temps que les programmes s'ouvrent)
echo -e "${vertclair}OK !${neutre}" # Message utilisateur
echo -e "" # Ligne vide
echo -e "\n###################################################################################################\n" # Affiche ligne de #
echo -e "" # Ligne vide
##############################
##### Texte de Bienvenue #####
##############################
echo -e "${neutrecligno}Appuyez sur une touche ou fermez la fenêtre.${neutre}" # Message blanc cllignotant
read -n1; # Attends que l'utilisateur face ENTRER CLAVIER
function separator() { # Deffinition de la fonction separator et de qu'elle contient (pour l'utiliser plus tard)
echo -e "\n${rougefonce}*${rose}*${vertfonce}*${vertclair}*${orange}*${jaune}*${bleufonce}*${bleuclair}*${violetfonce}*${violetclair}*${cyanfonce}*${cyanclair}*${grisclair}*${gris}*${rougefonce}*${rose}*${vertfonce}*${vertclair}*${orange}*${jaune}*${bleufonce}*${bleuclair}*${violetfonce}*${violetclair}*${cyanfonce}*${neutre}${rougefonce}*${rose}*${vertfonce}*${vertclair}*${orange}*${jaune}*${bleufonce}*${bleuclair}*${violetfonce}*${violetclair}*${cyanfonce}*${cyanclair}*${grisclair}*${gris}*${rougefonce}*${rose}*${vertfonce}*${vertclair}*${orange}*${jaune}*${bleufonce}*${bleuclair}*${violetfonce}*${violetclair}*${cyanfonce}*${neutre}${rougefonce}*${rose}*${vertfonce}*${vertclair}*${orange}*${jaune}*${bleufonce}*${bleuclair}*${violetfonce}*${violetclair}*${cyanfonce}*${cyanclair}*${grisclair}*${gris}*${rougefonce}*${rose}*${vertfonce}*${vertclair}*${orange}*${jaune}*${bleufonce}*${bleuclair}*${violetfonce}*${violetclair}*${cyanfonce}*${neutre}${rougefonce}*${rose}*${vertfonce}*${vertclair}*${orange}*${jaune}*${bleufonce}*${bleuclair}*${violetfonce}*${violetclair}*${cyanfonce}*${cyanclair}*${grisclair}*${gris}*${rougefonce}*${rose}*${vertfonce}*${vertclair}*${orange}*${jaune}*${bleufonce}*${bleuclair}*${violetfonce}*${violetclair}*${cyanfonce}*${neutre}\n"
} # Fin de la définition de la fonction separator
separator # Utilisation de la fonction separator
# echo -e " " # Ligne vide
echo -e "${vertclair}$(users) votre $(lsb_release -ds) @ $(uname -srn) est prêt ! ${neutre}" # Message de bienvenue AVEC VARIABLE nom d'utilisateur, version d'Ubuntu, version du noyaux Linux
# echo -e " " # Ligne vide
separator # Utilisation de la fonction separator
#separator ## Utilisation de la fonction separator
#echo -e "\e[5;49;93mBienvenue${neutre} \e[5;49;92mà toi${neutre} \e[5;49;91mThibault${neutre}" ## Message utilisateur de bienvenue
#echo -e " " ## Ligne vide
#separator ## Utilisation de la fonction separator
echo -e " " # Ligne vide
##############################
##### FIN DU SHELL #####
##############################
exit 0 # Un code de retour zéro du script indique un succès au shell.
Dernière modification par denver (Le 03/09/2021, à 22:58)
Hors ligne
#2 Le 24/08/2021, à 16:58
- Tawal
Re : Script besoin d'aide pour une commande OUI/NON
Hello,
Sans en être sûr, il me semble que tu devrais appeler la fonction reponse après le done.
Edit:
Mais du coup, pas besoin d'une fonction, il te faut juste intégrer le code de la fonction après le done
Dernière modification par Tawal (Le 24/08/2021, à 17:00)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#3 Le 24/08/2021, à 17:03
- denver
Re : Script besoin d'aide pour une commande OUI/NON
Hello
Merci j'ai essayé après le done d’appeler ma fonction mais peut importe mon choix oui ou non, mon test s'effectue tout le temps et ce peut importe mon choix...
Je crois que c'est ma fonction que j'ai mal écris...
J'ai essayer comme un couillon de déplacer ma fonction un peu partout et de faire des test dans mon terminal, mais sans succès (encore)
Hors ligne
#4 Le 24/08/2021, à 17:07
- Tawal
Re : Script besoin d'aide pour une commande OUI/NON
Il y a une erreur là :
if [ "$opinion"=OUI ]
il faut plutôt :
if [ "$opinion" = "OUI" ]
ou
if [[ "$opinion" == "OUI" ]]
Edit:
Rajout du crochet oublié dans le 2ieme code de correction
Dernière modification par Tawal (Le 24/08/2021, à 17:10)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#5 Le 24/08/2021, à 17:15
- denver
Re : Script besoin d'aide pour une commande OUI/NON
Yesss !!
Merci beaucoup !! Ça fonctionne
Merci beaucoup Tawal
Hors ligne
#6 Le 24/08/2021, à 17:19
- Tawal
Re : Script besoin d'aide pour une commande OUI/NON
De rien
Un peu de lecture pour toi :
man bash
https://abs.traduc.org/abs-fr/
https://frederic-lang.developpez.com/tu … rog-shell/
https://wiki.bash-hackers.org/start
Bonnes lectures.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#7 Le 24/08/2021, à 18:46
- Watael
Re : Script besoin d'aide pour une commande OUI/NON
if [ "$opinion" = "OUI" ]
ou
if [[ "$opinion" == "OUI" ]]
mais, quel intérêt les crochets doubles ?
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#8 Le 24/08/2021, à 21:17
- Tawal
Re : Script besoin d'aide pour une commande OUI/NON
mais, quel intérêt les crochets doubles ?
Aucun dans ce cas là précis, je le conçois.
Mais au moins ça indique la forme possible et peut amener à se poser des questions sur le pourquoi de cette forme de test.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#9 Le 24/08/2021, à 23:19
- Watael
Re : Script besoin d'aide pour une commande OUI/NON
les guillemets, entre crochets doubles, sont (très) facultatifs.
Dernière modification par Watael (Le 24/08/2021, à 23:19)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#10 Le 25/08/2021, à 03:01
- Tawal
Re : Script besoin d'aide pour une commande OUI/NON
Du coté droit de l'égalité oui, mais même pour la variable ? Si celle-ci contient des espaces ?
Par "sécurité", je les mets : ce qui montre une maîtrise pas totale de cette syntaxe.
Edit:
Je me réponds en montrant :
$ var="presque ça"
$ [[ $var == "presque ça" ]] && echo ok
ok
$
Les guillemets sont obligatoires coté droit si l'expression contient un ou plusieurs espaces, mais pas coté gauche, espace ou pas dans la variable.
$ [[ $var == presque ça ]] && echo ok
bash: erreur de syntaxe dans une expression conditionnelle
bash: erreur de syntaxe près de « ça »
$
Merci de cette indication/précision
Dernière modification par Tawal (Le 25/08/2021, à 03:07)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#11 Le 25/08/2021, à 04:29
- Watael
Re : Script besoin d'aide pour une commande OUI/NON
des deux côtés, mais avec des variables !
$ exp='presque ça'
$ var='presque pas'
$ [[ $var == $exp ]]
$
c'est le Développement de paramètres que protège bash.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#12 Le 25/08/2021, à 13:45
- Tawal
Re : Script besoin d'aide pour une commande OUI/NON
Oui en effet.
Merci encore, j'y prendrais garde à l'avenir
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne