Script refusant de s'exécuter correctement sur une machine
Bonjour,
Un petite présentation avant de vous soumettre mon problème.
Je m'appelle Vincent, j'ai 42 ans et je tente de me reconvertir professionnellement. Je suis donc en stage dans une petite entreprise très sympa ou je suis chargé de déployer une machine sous OpenVAS ( un scanner de vulnérabilités ), et de migrer de Nagios 3 vers Nagios 4.
Voici ce qui m'amène : J'ai du écrire un script shell que devra être placer dans la crontab. Ce script, mon premier, fonctionne parfaitement avec ma machine sous Kali linux au travail, il fonctionne parfaitement à la maison, toujours sous Kali et sur la machine virtuelle de la maison ( debian 7.9, virtualbox).
Dans l'entreprise, il devra être deployer dans une machine virtuelle sur un serveur Xen ( debian 7.9). Et là, patatra, ca ne fonctionne pas. le script plante dès qu'il faut recuperer la variable pour la target.
Nom du script: OpenVAS
Compatible avec: Bash
Descriptif: Permet d'automatiser le démarrage des scans.
Pré-requis: Openvas
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#! /bin/bash
cd /root
mkdir .openvastmp
mkdir OpenVASreports
cd .openvastmp
# variables à renseigner
u=username #nom de l'utilisateur
pw=password #pw de l'utilisateur
cible=Openvas #nom de la cible
hosts=ip.ci.bl.e #IP de la cible
# création et récupération de la target
omp -u $u -w $pw --xml='
<create_target> <!--création de la cible-->
<name>'$cible'</name> <!--nom de la cible -->
<hosts>'$hosts'</hosts> <!--ip de la cible -->
</create_target>'
target=$(omp -u $u -w $pw --get-targets | grep $cible)
targetid=$(echo ${target:0:36})
echo $target
echo $targetid
#pour la tâche suivante, il nous faut l'uuid d'une config
# dans un shell : omp -u -w --get--configs
# créer une variable name à utiliser dans la tâche
name=$cible
echo $name
#création de la tâche
omp --verbose -u $u -w $pw --create-task --name=$name -c daba56c8-73ec-11df-a475-002264764cea --target=$targetid
#récupération de l'uuid de la tâche
taskid=$(omp -u $u -w $pw --get-tasks= |grep New)
taskid=$(echo ${taskid:0:36})
echo $taskid
#démarrage de la tâche
omp -u $u -w $pw --xml='
<start_task task_id="'$taskid'"/>'
#on vérifie l'état de la tâche
done=NotDone
echo $done
while test "$done" != "Done"
do
done=$(omp -u $u -w $pw -G $taskid | grep Done)
done=$(echo ${done:38:4})
if test "$done" != "Done"
then echo " Scan en cours " && omp -u $u -w $pw -G | grep Running
else
echo " Scan terminé "
fi
sleep 30
done
#récuperation du rapport
omp -u $u -w $pw -G $taskid > task
awk NR==2 task > report
reportid=$(awk '{print substr($0,3,36)}' report)
rm task
#récupérer le rapport au format XML
#dans un shell omp -u -w -F
cd /home/$u/OpenVASreports
omp -u $u -w $pw --xml='
<get_reports report_id="'$reportid'"
format_id="a994b278-1f62-11e1-96ac-406186ea4fc5"/>' > report_$reportid.xml
# mail quand c'est fini
echo " $cible-$reportid est disponible. Kali a tout fini" |mail -s " Vous avez un message de Kali " -a " From: Kali" name@name.com
unset VAR |
Voilà. le script est chmoder +x dans toutes les machines. Je l’exécute en faisant ./OpenvasScript. Il fonctionne dans 3 machines sur 4 et évidement, pas sur celle qui sera utilisée.
Je suis bien conscient des maladresses du script. Je ne sais pas programmer. Je n'ai que quelque notions de C et il y a trois semaines, je ne saivais pas réaliser un script shell. Je travaille à l'améliorer notamment et utilisant cut.
Je pense que le script n'utilise pas le bash avec la machine à déployer ce qui fait planter le script, mais comment en être sur ?
Peut être que cela vient d'autre chose.
Je vous remercie pour vos pistes, je les vérifierai demain, au travail.
Vincent