Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

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 03/10/2018, à 15:17

Skratsh

Pb lisibilitée script

Bonjour à tous,

Je viens vers vous car j'ai fait un petit script pour de la maintenance distante via ssh, petit souçis je trouve ça bordélique malgré mes efforts, existe-il une solution logicielle pour le réorganiser ou auriez vous des astuces pour me guider un peu?

Merci d'avance pour vos réponses !

Hors ligne

#2 Le 03/10/2018, à 15:45

Watael

Re : Pb lisibilitée script

salut,

à vue de nez...

ah non, tu ne nous montres rien, et on ne peut pas répondre au pif ! smile


eval, c'est mal.

Hors ligne

#3 Le 03/10/2018, à 15:55

diesel83140

Re : Pb lisibilitée script

Skratsh a écrit :

Bonjour à tous,

Je viens vers vous car j'ai fait un petit script pour de la maintenance distante via ssh, petit souçis je trouve ça bordélique malgré mes efforts, existe-il une solution logicielle pour le réorganiser ou auriez vous des astuces pour me guider un peu?

Merci d'avance pour vos réponses !

Décomposer en fonctions...

Commenter...

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; C'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#4 Le 03/10/2018, à 15:55

Skratsh

Re : Pb lisibilitée script

Je ne peux pas vraiment vous montrer le vrai script malheureusement, si ça peut t'éclairer voici ce qu'il donne :

################################################################################### variable bloquage ##############################################################################################################
texte='MAINTENANCE_EN_COURS_MERCI_DE_NE_PAS_UTILISER_CET_ORDINATEUR'
############################################################################### variable liste menu zenity #########################################################################################################
selection=$(zenity --list "XXXX" "XXXXXXX" "XXXXXXXXX" "XXXXXXXXXX" "XXXXXXX" "TEST" --column="" --text="" --title="SCRIPT MAINTENANCE" --width=250 --height=500 2>/dev/null)
###################################################################################### menu et commandes ########################################################################################################## 
###################################################################################### XXXXXXX ##########################################################################################################
case "$selection" in
	"XXXXXXX")cssh --autoclose 1 --quiet --action "export DISPLAY=:0.0 2>/dev/null ; export XAUTHORITY=$(eval echo ~`who | grep tty7 | sed 's/\([a-z]*\).*/\1/'`)/.Xauthority 2>/dev/null ; zenity --warning --text '$texte' 2>/dev/null | xtrlock 2>/dev/null " pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP
	       
                           cssh pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP
	       
                           cssh --autoclose 1 --quiet --action "pkill -9 'zenity' ; pkill -9 'xtrlock'" pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP;;

#################################################################################### XXXXXXXXXXXX ##########################################################################################################	
        "XXXXXX")cssh --autoclose 1 --quiet --action "export DISPLAY=:0.0 2>/dev/null ; export XAUTHORITY=$(eval echo ~`who | grep tty7 | sed 's/\([a-z]*\).*/\1/'`)/.Xauthority 2>/dev/null ; zenity --warning --text '$texte' 2>/dev/null | xtrlock 2>/dev/null " pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP
	       
               cssh pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP
	       
               cssh --autoclose 1 --quiet --action "pkill -9 'zenity' ; pkill -9 'xtrlock'" pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP pc@adresseIP;;
	

Avec beaucoup plus de lignes / d'IP d'où le bordel ^^

PS : Merci de ta réponse Jean-Marie, juste décomposer en fonctions c'est à dire ? hmm Et commenter comme tu peux le voir j'ai essayer de séparer au maximum et d'espacer mes lignes

Dernière modification par Skratsh (Le 03/10/2018, à 15:56)

Hors ligne

#5 Le 09/10/2018, à 21:18

HP

Re : Pb lisibilitée script

Skratsh a écrit :

[…] pour de la maintenance distante via ssh, petit souçis je trouve ça bordélique malgré mes efforts, existe-il une solution logicielle […]

https://www.chef.io/chef/
https://en.wikipedia.org/wiki/Chef_(software)

https://www.ansible.com/overview/how-ansible-works
https://docs.python-guide.org/scenarios/admin/


cat /dev/urandom >/dev/null 2>&1 #621141 - github

Hors ligne

#6 Le 09/10/2018, à 21:44

Watael

Re : Pb lisibilitée script

ce n'est pas que bordélique, c'est aussi du mauvais code :
grep | sed : non, sed sait n'appliquer des commandes que sur les lignes qui contiennent une regex, et n'afficher que ces lignes.
command | xtrlock : je ne crois pas que xtrlock accepte quoi que ce soit sur son entrée standard...

une ligne d'un script ne doit pas excéder 80 caractères.
donc, plutôt que :

commande --option1 --option2 'longue; commande; qui; dure'
commande \
--option1 \
--option2 '\
longue;
commande;
qui;
dure'

en bon bûcheron, si je dois élaguer toutes les branches d'un arbre, je coupe l'arbre tortueux (AKA je réécrirais ce script).

Dernière modification par Watael (Le 10/10/2018, à 09:11)


eval, c'est mal.

Hors ligne

#7 Le 11/10/2018, à 14:20

Skratsh

Re : Pb lisibilitée script

Merci à tous de vos conseils et réponses! Comme vous vous en doutez je débute donc j'ai vraiment du mal encore ^^ J'ai tenté une réécriture donc mais ne marche plus je suis paumé là hmm

#!/bin/bash
##### Var Locations #####
#Primaire A
prim_a='toto@192.168.0.0'

#Maternelle A
mat_a='toto@192.168.0.0'

#Primaire St 
prim_st='toto@192.168.0.0'

#Primaire St-Classe Mobile
prim_st_mob='toto@192.168.0.0'

#Maternelle St 
mat_st='toto@192.168.0.0'

#Primaire C
prim_c='toto@192.168.0.0'

##### Var Zenity #####
selection=$(zenity --list "Primaire A" "Maternelle A" "Primaire St " "Primaire St-Classe Mobile" "Maternelle St" "Primaire C"  --column="" --text="" --title="SCRIPT MAINTENANCE" --width=300 --height=500 2>/dev/null)

##### Var Commandes #####

## 1er cssh -> bloquage pc ##
commande1="cssh --autoclose 1 --quiet --action "export DISPLAY=:0.0 2>/dev/null ; export XAUTHORITY=$(eval echo ~`who | grep tty7 | sed 's/\([a-z]*\).*/\1/'`)/.Xauthority 2>/dev/null ; zenity --warning --text 'MAINTENANCE_EN_COURS_MERCI_DE_NE_PAS_UTILISER_CET_ORDINATEUR' 2>/dev/null | xtrlock 2>/dev/null " $ip"

## 2eme cssh -> connexion pour maintenance ##	       
commande2="cssh $ip"

## 3eme cssh -> fermeture zenity/xtrlock (bloquage)	       
commande3="cssh --autoclose 1 --quiet --action "pkill -9 'zenity' ; pkill -9 'xtrlock'" $ip"

##### Var Choix et Connexion #####
if [ $selection = Primaire\ A ]
    then
    ip=$prim_a
    $commande1
    $commande2 
    $commande3    

elif [ $selection = Maternelle\ A ]
    then
    ip=$mat_a
    $commande1 
    $commande2 
    $commande3    

elif [ $selection = Primaire\ St ]
    then
    ip=$prim_st
    $commande1 
    $commande2    
    $commande3 

elif [ $selection = Primaire\ St–Classe\ Mobile ]
    then
    ip=$prim_st_mob
    $commande1 
    $commande2 
    $commande3    

elif [ $selection = Maternelle\ St ]
    then
    ip=$mat_st
    $commande1 
    $commande2 
    $commande3    

elif [ $selection = Primaire\ C ]
    then
    ip=$prim_c   
    $commande1 
    $commande2 
    $commande3
else
echo "ERREUR"
fi

J'ai les souçis suivant :
-bin/bash introuvable (pourtant bien présent quand je fais ls /bin/)
-Plus "simplement" les commandes cssh font n'importe quoi ^^'
J'en demande beaucoup mais encore une fois merci à vous ! smile

Edit : J'ai corrigé les apostrophes (j'avais fais des copier/coller de cochon sous libre office^^')

+ #!/bin/bash
./maintenance3.0.sh: 1: ./maintenance3.0.sh: #!/bin/bash: not found
+ prim_aristide=toto@192.168.0.0
+ mat_arist=toto@192.168.0.0
+ prim_stju=toto@192.168.0.0
+ prim_stju_mob=toto@192.168.0.0
+ mat_stju=toto@192.168.0.0
+ prim_clap=toto@192.168.0.0
+ temp=toto@192.168.0.0
+ zenity --list Primaire A Maternelle A Primaire St Primaire St-Classe Mobile Maternelle St Primaire C Temporaire --column= --text= --title=SCRIPT MAINTENANCE --width=300 --height=500
+ selection=Temporaire
+ texte='MAINTENANCE_EN_COURS_MERCI_DE_NE_PAS_UTILISER_CET_ORDINATEUR'
+ commande1=cssh --autoclose 1 --quiet --action export DISPLAY=:0.0
+ grep tty7
+ sed s/\([a-z]*\).*/\1/
+ who
+ eval echo ~max
+ echo /home/max
+ export XAUTHORITY=/home/max/.Xauthority
+ xtrlock  
+ zenity --warning --text MAINTENANCE_EN_COURS_MERCI_DE_NE_PAS_UTILISER_CET_ORDINATEUR
+ commande2=cssh 
+ commande3=cssh --autoclose 1 --quiet --action pkill -9 zenity
./maintenance3.0.sh: 74: ./maintenance3.0.sh: -9: not found
+ pkill -9 xtrlock 
+ [ Temporaire = Primaire A]
+ [ Temporaire = Maternelle A]
+ [ Temporaire = Primaire St]
+ [ Temporaire = Primaire St–Classe Mobile]
+ [ Temporaire = Maternelle St]
+ [ Temporaire = Primaire C]
+ [ Temporaire = Temporaire]
+ ip=max@192.168.0.38
+ cssh --autoclose 1 --quiet --action export
+ cssh
+ 

Dernière modification par Skratsh (Le 12/10/2018, à 07:52)

Hors ligne

#8 Le 11/10/2018, à 16:45

Watael

Re : Pb lisibilitée script

il faut nous copier précisément (entre balises CODE, stp) les messages d'erreurs.

il y a des apostrophes qui n'en sont pas, ou plutôt il y a UNE apostrophe et d'autres caractères qui y ressemble sans en être , dont je ne connais pas le nom. sad
Or, le shell attend des apostrophes.

as-tu écrit ton script sur Windows ?

Dernière modification par Watael (Le 12/10/2018, à 00:55)


eval, c'est mal.

Hors ligne

#9 Le 23/10/2018, à 10:42

Skratsh

Re : Pb lisibilitée script

https://www.shellcheck.net/ Voilà pb résolu, merci à tous ! smile

Hors ligne