#!/usr/bin/env ruby require 'json' require '~/bin/ArrayToTable' def mark_running(t); return "#{C_LIGHT_CYAN}#{t}#{C_NC}"; end def mark_autostart(t); return "#{C_YELLOW}#{t}#{C_NC}";end # it expect that each jail config is located in /jails/JAILNAME/c.conf existing_jails= `grep -h '^[^#]' /jails/*/c.conf 2> /dev/null| grep -h -E '[[:space:]]*[[:alnum:]][[:space:]]*\\{' | tr -d '\\ \\t{'`.split running_jails=JSON.parse(`jls --libxo json`)['jail-information']['jail'].map{ |hsh| hsh['hostname'] } autostart_jails=`sysrc -n jail_list`.strip.split array_table=[[ mark_running("runs")+"/stopped","version", mark_autostart("autostart ip")+"/ip", "note" ]] existing_jails.each{|j| config=File.read("/jails/#{j}/c.conf") ip=/\s*\$ip\s*=\s*"([^"]*)"/.match(config) ip= ip ? ip[1] : "-" note=/\s*\$note\s*=\s*"([^"]*)"/.match(config) note = note ? note[1] : "-" if File.exist?("/jails/#{j}/rootfs/bin/freebsd-version") freeBSDversion=`/jails/#{j}/rootfs/bin/freebsd-version -u`.sub("RELEASE","R").sub("CURRENT","C").sub("STABLE","S").sub("BETA","B").strip else freeBSDversion="-" end running=running_jails.include?(j) is_autostart=autostart_jails.include?(j) array_table << [ running ? mark_running(j) : j,freeBSDversion,is_autostart ? mark_autostart(ip) : ip, note ] } print array_table.to_table puts "Starting order: #{autostart_jails.join(",")}" print "Alternative user scripts located in ~/bin :" bin_directory_content =Dir.entries("/root/bin").delete_if {|x| x.start_with?(".")} blacklisted_bin_content=%w(ArrayToTable.rb jlist odkladiste jmore jailCreateEpair.sh) puts (bin_directory_content-blacklisted_bin_content).join(",")