Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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  big_smile

Merci beaucoup Tawal

Hors ligne

#6 Le 24/08/2021, à 17:19

Tawal

Re : Script besoin d'aide pour une commande OUI/NON


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

Tawal a écrit :
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

Watael a écrit :

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 wink

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 wink


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