OpenVZ Dashboard
Недавно перешёл на OpenVZ 7. WEB-панель ставить не хотелось, а какой-то dashboard всё же нужен… У меня мало опыта в написании bash скриптов, но решил «по быстрому» что-то наваять… Вот что получилось…
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 |
#/bin/bash # функция, предотвращающая участия строки заголовков таблицы в сортировке body() { IFS= read -r header printf '%s\n' "$header" "$@" } df -h > df_tmp # свободное место на дисках виртуалок printf 'NAME\tHOSTNAME\tTMPL\tTYPE\tIP\tMEMORY\tSTATE\tOS\tSIZE\tUSED\tAVAIL\tAVAIL(%%)\n' >> tmp # заголовки таблицы array=(/vz/root/*/) # директории виртуалок for dir in "${array[@]}"; do bs=$(basename $dir) # ID виртуалки prlctl list -i "$bs" > ct_tmp sed -i '1D' ct_tmp sed -i '/^$/d' ct_tmp sed -i 's/[^.]*: //g' ct_tmp df=($(df -h | grep "$bs" | awk '{print $2,$3,$4,$5}')) mapfile -t line < ct_tmp ip=$(echo -r "${line[27]}" | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}/\b" | sed 's/\///g') memory=$(echo "${line[23]}" | grep -oE "\b[0-9]{1,4}Mb\b") printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' "${line[2]}" "${line[36]}" "${line[7]}" "${line[4]}" "${ip}" "${memory}" "${line[5]}" "${line[6]}" "${df[0]}" "${df[1]}" "${df[2]}" "${df[3]}" >> tmp done cat tmp | column -t -s $'\t' | body sort -k3 -k5 rm -f tmp ct_tmp df_tmp |
Скрипт в результате выводит что-то типа
1 2 3 4 5 6 7 8 9 |
NAME HOSTNAME TMPL TYPE IP MEMORY STATE OS SIZE USED AVAIL AVAIL(%) 102 openVPN.zk no CT 10.33.33.102 4096Mb running centos7 4,9G 759M 3,9G 17% 103 nginx-proxy.zk no CT 10.33.33.103 4096Mb running centos7 4,9G 998M 3,7G 22% 110 mysql-prod.zk no CT 10.33.33.110 8192Mb running centos7 15G 1,8G 13G 13% 112 postgresql.zk no CT 10.33.33.112 8192Mb running centos7 15G 836M 14G 6% 130 zeka-kiev-ua.zk no CT 10.33.33.130 4096Mb running centos7 4,9G 1,1G 3,6G 24% 131 real-english.zk no CT 10.33.33.131 8192Mb running centos7 15G 1,8G 13G 13% 140 php-7-1-nginx-fpm.zk no CT 10.33.33.140 8192Mb running centos7 15G 2,8G 12G 20% clean-template clean-template.zk yes CT 4096Mb stopped centos7 |