documentation/audit/dopackagelist

62 lines
1.3 KiB
Bash

#!/bin/bash
align_dpkgs()
{
local source_file="$1"
local letter="$2"
# Find the longest position.
local max=0
while read -r line; do
if [[ $line =~ '||/ N' ]]; then
local pos=$(expr index "$line" "$letter")
if (( $pos > $max)); then
max=$pos
fi
fi
done < "$source_file"
# Insert spaces.
local currentpos=0
local middle=""
while read -r line; do
#echo -e "$line\n"
if [[ $line =~ '||/ N' ]]; then
local currentpos=$(expr index "$line" "$letter")
currentpos=$(($currentpos-1))
local diff=$(($max-currentpos-1))
middle=$(printf %${diff}s)
local start=${line:0:currentpos}
local end=${line:currentpos}
echo "${start}${middle}${end}"
elif [[ $line =~ 'ii ' ]]; then
local start=${line:0:currentpos}
local end=${line:currentpos}
echo "${start}${middle}${end}"
fi
done < "$source_file"
}
# ##############################################################################
# Put all dpkg -l output in one file.
echo "" > tmp
for guest in $(cat machines.txt) ;
do
ssh -t admin666@$guest dpkg -l --no-pager >> tmp
done
# Align the column Version.
align_dpkgs "tmp" "V" > tmp2
# Align the column Architecture.
align_dpkgs "tmp2" "A" > tmp
# Output cleaned lines.
grep "^ii" tmp | sort | uniq
# Clean temprary files.
rm tmp tmp2