#!/bin/bash
# colors
RED="^[[1;31m"
GREEN="^[[1;32m"
non="^[[0m"
# script to produce fancylxc output
printout="Name State IPv4 Autostart OSType"
printout="${printout}"$'\n'"----- ------ ----- ---------- ---------"
cpath="/lxc"
me=$(basename $0)
runningonly=0
if [[ ${me} =~ "run" ]]; then
runningonly=1
fi
# check auto start status
chkstart() {
autostart=$(egrep 'lxc.start.auto[ =]*1' ${cpath}/${name}/config | awk -F= '{print $2}')
if [[ "${autostart}" == "" ]] || [[ ${autostart} -eq 0 ]]; then
autostart="NO"
else
autostart="YES"
fi
}
chkostype() {
os=$(egrep -o '[a-z]+.common.conf' ${cpath}/${name}/config)
case ${os} in
ubuntu*) ostype="Ubuntu";;
redhat*) ostype="Redhat";;
debian*) ostype="Debian";;
centos*) ostype="CentOS";;
*) ostype="Unknown";;
esac
}
for cname in $(lxc-ls 2>/dev/null); do
name="${cname}"
if [[ "x${cname}" == "x." ]]; then continue; fi
state=$(lxc-info -n "${cname}" | egrep "^State" | awk -F: '{print $2}')
if [[ "${state}" =~ "RUNNING" ]]; then
ipaddr=$(lxc-info -n "${cname}" | egrep "^IP" | awk -F: '{print $2}')
if [[ "x${ipaddr}" == "x" ]]; then ipaddr="-"; fi
else
lxcconfigpath="${cpath}/${cname}/config"
ipaddr=$(egrep 'ipv4 ?= ?.*$' ${lxcconfigpath} |awk '{print $NF}'|sed 's@/.*$@@')
if [[ "x${ipaddr}" == "x" ]]; then ipaddr="-"; fi
fi
if [[ -r "${cpath}/${cname}/config" ]]; then
chkstart
chkostype
fi
printout="${printout}"$'\n'"${name} ${state} ${ipaddr} ${autostart} ${ostype}"
done
if [[ ${runningonly} -eq 1 ]]; then
echo -e "${printout}" | column -t | sed "s/\(STOPPED\)/${RED}\1${non}/i; s/\(RUNNING\)/${GREEN}\1${non}/i" | awk 'NR<3{print;next}{print | "egrep RUNNING"}'
else
echo -e "${printout}" | column -t | sed "s/\(STOPPED\)/${RED}\1${non}/i; s/\(RUNNING\)/${GREEN}\1${non}/i"
fi
Comments