Pages : 1
#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 !
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 03/10/2018, à 15:55
- diesel
Re : 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 !
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 ? 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
[…] 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 #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)
Connected \o/
Welcome to sHell. · eval is evil.
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à
#!/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 !
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.
Or, le shell attend des apostrophes.
as-tu écrit ton script sur Windows ?
Dernière modification par Watael (Le 12/10/2018, à 00:55)
Connected \o/
Welcome to sHell. · eval is evil.
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 !
Hors ligne
Pages : 1