#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
Debian 12 sur Thinkpad reconditionné
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...
Debian 12 sur Thinkpad reconditionné
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