Les derniers mois, j’ai eu beaucoup de projets en proxmox. Certaines tâches, j’ai découvert, peut se faire qu’en ligne commande ou peut se faire plus vite en ligne commande.

Kill VM

Ça m’est arrivé quelques fois de ne pouvoir pas arrêter une VM via l’interface graphique, voila ma solution:

echo who wants to die?
# qui veut mourir?
read machine

# je declare l'id du machine bloque
result=$(qm list | awk '{print $1}' |grep $machine)

# je vérifie l'existence de cette machine dans la liste de machines existantes
if [ $? != 0 ]; then
    echo no such machine boss 
elif [ $result ]; then

# je cherche le numéro de processus assigne à la machine concerne
    tokill=$(ps aux | grep "/usr/bin/kvm -id $machine" | awk -F " " '{print $2;exit}')

# j'arrête le processus
    kill -9 $tokill
    echo $tokill killed
fi

Effacer VM

À la fin d’un projet, quand il y a trop de machines à effacer, c’est plutôt bien d’avoir un peu d’aide :

# Quelles machines ?
read -p "who? " vm

# Itérer par la liste 
for v in $vm; do
# Effacer les vms une apres l'autre
   qm destroy $v --purge
done

Deplacer VM (échoué)

Le script suivant ne marche pas, c’est un script qui devrait prendre l’id d’une machine, le type de disque virtuel et déplacer ce disque sur un autre espace de stockage:

# Je prends l'ids des machines concernées et le type de disque (ça permet
# d'identifier le disque, je souhaite déplacer) et je specifie le format de la
# liste  
read -p "id of machine and disk like ide1, sata2...  separated by ; Go  " vm

# Je configure le séparateur de champ en m'assurant que ma liste est bien
# formatée  
# Ex:
# vm1 sata2;
# vm2 ide1;

OIFS="$IFS"
IFS=";"

# Je commence d'itérer par la liste
for v in $vm;do
    qm disk move $v Backup --delete
done
IFS=$OIFS

Pourquoi ça ne marche pas ?

Sauvegarder

En fin un petit script de sauvegarde informatique qui marche vraiment bien avec crontab.

Ce qui est spécial est le système de sauvegarde de journaux. J’ai voulu avoir les traces de chaque déplacement/copie organisée d’une manière logique qui facilite la découverte des erreurs.

À ce moment-là, j’avais un disque peu fiable.


for folder in {PhotoOriginal,PhotoEdit,Docs,dump,};
do
    year=`date +%Y`
    month=`date +%m`
    day=`date +%d`
    time=`date +%H:%M`
#    echo $year $month $day $folder $date $time
    mkdir -p /home/radu/cron_logs/$year
    mkdir -p /home/radu/cron_logs/$year/month_$month
    mkdir -p /home/radu/cron_logs/$year/month_$month/$folder
    rsync -az --update --info=progress2 --delete /mnt/pve/Public/$folder /mnt/Backup/ --log-file=/home/radu/cron_logs/$year/month_$month/$folder/$day-$time.log ;
done