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 31/12/2019, à 14:20

k3c

aide pour améliorer un script bash

Bonjour

J'ai un script qui marche, mais je suis preneur de tous conseils pour l'améiiorer

ce script met à jour un container docker avec la dernière version de captvty v3, et regarde les vulnérabilités connues

les 2 dernières lignes sont surtout pour moi, pour le copier sur hub.docker.com

merci pour tout retour

set -x
command -v docker-squash >/dev/null 2>&1 || { echo >&2 "docker-squash pas installé, faites pip install docker-squash pour l'installer"; exit 1; }
command -v trivy >/dev/null 2>&1 || { echo >&2 "trivy pas installé, voyez https://github.com/aquasecurity/trivy/blob/master/README.md#debianubuntu pour l'installer"; ex
it 1; }
id=$(docker ps -qf  name=^captvty_v3_1$)
while [[ -z $id ]]; do docker run -d -e DISPLAY --name=captvty_v3_1 -v ${HOME}:/home/gg/Captvtyv3/Vidéos --net=host k3ck3c/captvty_v3_1 && sleep 3 && id=$(docker ps -qf
  name=^captvty_v3_1$) ; done
echo $id
latest=$(wget -q -O- 'http://v3.captvty.fr' | sed -n 's/.*href="\(\/\/.\+\.zip\).*/http:\1/p')
test -n "$latest" && wget -qO /tmp/Captvty3.zip "$latest"
docker cp /tmp/Captvty3.zip $id:/tmp
docker exec -it $id unzip -fo -d /home/gg/Captvtyv3 /tmp/Captvty3.zip
docker exec -it $id rm /tmp/Captvty3.zip
docker exec -it -u root $id apt-get update 
docker exec -it -u root $id apt-get --allow-unauthenticated -y upgrade 
docker commit $id k3ck3c/captvty_v3_1
docker tag $(docker-squash k3ck3c/captvty_v3_1 | awk '/New squashed image ID is/ {print $NF}') k3ck3c/captvty_v3_1
docker images k3ck3c/captvty_v3_1
trivy --clear-cache k3ck3c/captvty_v3_1 > doc_trivy_v3_1
grep ^Total: doc_trivy_v2
docker login
docker push k3ck3c/captvty_v3_1
set +x

Archlinux sur Xiaomi Air 13

Hors ligne

#2 Le 31/12/2019, à 15:24

Watael

Re : aide pour améliorer un script bash

salut,

d'abord, aère le code pour améliorer la lisibilité, et mettre en évidence ses différentes parties/articulations.
s'il n'y a pas de données à conserver d'une exécution à l'autre, évite les fichiers temporaires.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 31/12/2019, à 18:02

kamaris

Re : aide pour améliorer un script bash

C'est un détail, mais il vaut sans doute mieux utiliser le test avec simples crochets tant que c'est possible :

while [ -z "$id" ]; do …

Il est standard contrairement aux doubles crochets, et puis autant réserver ces derniers aux cas où ils apportent quelque chose de plus.

Hors ligne

#4 Le 02/01/2020, à 19:36

k3c

Re : aide pour améliorer un script bash

Merci pour les retours

il y a un truc que je voudrais améliorer, c'est le while

si le container n'est pas démarré, je le démarre, j'attends 3 secondes, mais si il ne réussit pas à démarrer, je reste dans le while, c'est pas terrible...


Archlinux sur Xiaomi Air 13

Hors ligne

#5 Le 02/01/2020, à 19:58

Watael

Re : aide pour améliorer un script bash

tu veux remplacer

id=$(docker ps -qf  name=^captvty_v3_1$)
while [[ -z $id ]]; do docker run -d -e DISPLAY --name=captvty_v3_1 -v ${HOME}:/home/gg/Captvtyv3/Vidéos --net=host k3ck3c/captvty_v3_1 && sleep 3 && id=$(docker ps -qf
  name=^captvty_v3_1$) ; done

par

until docker run -d -e DISPLAY --name=captvty_v3_1 -v ${HOME}:/home/gg/Captvtyv3/Vidéos --net=host k3ck3c/captvty_v3_1; do sleep 3; done
id=$(docker ps -qf name=^captvty_v3_1$)

?

on peut ajouter un compteur :

until docker ... || ((n++ == maxAttempt))

et si le compteur est au max ET que docker n'a pas démarré, il faut arrêter le script.

Dernière modification par Watael (Le 02/01/2020, à 20:02)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne