Voor wie notulen maakt hier een tweetal scriptjes die handig zijn om te kijken welke teamleden en teams aan, danwel afwezig zijn. De eerste print een lijstje met aanwezig en afwezig teamleden op basis van de irc log. De tweede kijkt op launchpad of er nieuwe teamleden bij zijn gekomen. Zijn die er, dan kunnen die aan het eerste script worden toegevoegd.
#!/bin/bash
# This script looks in the logfile of an irc meeting if teammembers
# were attending the meeting. The output is a wiki tekst where
# teammembers who attended are grouped by their team(s) and teams
# that were not present are also shown
# usage: irc_aanwezig pad/naar/logfile
logfile=$1
teams="Artwork Beheer Documentatie Forum Irc Prikboard Promotie Vertaal Website"
declare -A teamlist
declare -a namelistarray
function namelist
{
cat <<'EOF'
cafuego:Cafuego:Irc
DooitzedeJong:Dooitze de Jong:Artwork:Documentatie
Double12:Double12:Prikboard:Promotie
femke98:Femke98:Forum
Hannie:Hannie:Vertaal
heir4c:Heir4c:Forum
JanC:Jan Claeys:Irc
johanvd:Johanvd:Forum:Documentatie
joolz:Joolz:Irc:Vertaal
Joshua822:Joshua:Documentatie
Nunslaughter:Nunslaughter:Forum
ronnie_vd_c:Ronnie:Artwork:Promotie
seveas:Dennis:Beheer:Website
Sjoerd:Sjoerd:Forum
SWAT:SWAT:Beheer:Irc:Vertaal
testcees:Testcees:Documentatie
Thomas_de_Graaff:Thomas de Graaff:Artwork:Promotie
trijntje:trijntje:Vertaal
Vistaus:Vistaus:Forum
Wazzzaaa:Wazzzaaa:Vertaal:Documentatie
EOF
}
# Check if logfile is given and readable
if [[ -z $logfile ]];then
echo "Argument ontbreekt, gebruik: irc_aanwezig /pad/naar/irc/logfile"
exit 1
elif [[ ! -f "${logfile}" ]];then
echo "Logfile ${logfile} bestaat niet."
exit 1
elif [[ ! -r "${logfile}" ]];then
echo "Logfile ${logfile} is niet leesbaar."
exit 1
fi
# Check for every line in the namelist if the user is in logfile
# and if so, check if user is teammember and add user to teamlist
ifs="$IFS" #backup $IFS (internal field separator)
IFS=$'\n' #set IFS to newline
namelistarray=($(namelist)) # put namelist in array
for dataline in ${namelistarray[@]};do
ircname="${dataline%%:*}" #first item in dataline
partline="${dataline#*:}"
name=${partline%%:*} #second item in dataline
# Check if ircname user is in logfile
if [ "$(grep "< ${ircname}>" $logfile)" ];then
# Check if user is member of teams
IFS=" " # Set internal field separator to space
for team in $teams;do
if [[ $dataline == *$team* ]];then
# add user to teamlist
teamlist[$team]="${teamlist[$team]}, ${name}"
fi
done
IFS=$'\n' # Set internal field separator back to newline
fi
done
IFS=$ifs #restore internal field separator
# Generate output to screen and file
rm $PWD/teamgrab.tmp
echo
echo "=== Aanwezige teams ==="
for team in $teams;do
if [ -n "${teamlist[$team]}" ];then
echo " * ${team} team (${teamlist[$team]#, })"
fi
done
echo "=== Afwezige teams ==="
for team in $teams;do
if [ -z "${teamlist[$team]}" ];then
echo " * ${team} team"|tee -a "$PWD/teamgrab.tmp"
fi
done
exit 0
#!/bin/bash
# grabber van gebruikersnamen van launchpad teams
# usage: teamgrab
# Variables:
new=1 # variable that shows wether there are new members
gone=1 # variable that shows wehter members have gone
declare -A teamlist
teams=" nl-Artwork nl-Beheer nl-Documentatie nl-Forum nl-Irc nl-Prikboard nl-Promotie nl-website l10n-nl"
# Cleanup before start
[ -f "$PWD/teamgrab.new" ] && rm "$PWD/teamgrab.new"
# Grab teammembers from the launchpad website and output to screen and file
echo
echo "Teams: leden"
echo "------------------------------------"
for team in $teams;do
teamlist[${team}]="$(wget -q -O - "https://launchpad.net/~ubuntu-$team/+members" |\
grep '<a href="/~.*" class="sprite person">.*</a>'|\
sed 's/.*\">//'|\
sed 's/<\/a>/,/')"
temp="${teamlist[$team]}"
teamlist[$team]="${temp%,}"
echo ${team}: ${teamlist[$team]}
echo ${team}, ${teamlist[$team]} >> $PWD/teamgrab.new
done
# Compare old file and new file for gone and new teammembers
# If no oldfile, copy newfile to oldfile
[ ! -f $PWD/teamgrab.old ] && { mv "$PWD/teamgrab.new" "$PWD/teamgrab.old";echo;echo "Teamlijst opgeslagen!";exit 0; }
# Put lines oldteamfile in array
teller=0
while read oldteamfile[$teller];do
(( teller += 1 ))
done < $PWD/teamgrab.old
# Put lines newfile in array
teller=0
while read newteamfile[$teller];do
(( teller += 1))
done < $PWD/teamgrab.new
# Check if there are new members in newfile
ifs=$IFS # temporarily change IFS (field selector)
IFS=','
echo
echo "Nieuw:"
echo "------------------------------------"
for (( teller=0 ; teller<${#newteamfile[@]} ; teller++ ));do
for word in ${newteamfile[$teller]};do
if [[ ! "${oldteamfile[$teller]}" == *"${word}"* ]];then
printf "%-15.15s %s\n" "${newteamfile[$teller]%%,*}:" "${word%,}"
new=0
fi
done
done
(( $new )) && echo " -"
# Check if there are old members not in newfile
echo
echo "Vertrokken:"
echo "------------------------------------"
for (( teller=0 ; teller<${#oldteamfile[@]} ; teller ++ ));do
for word in ${oldteamfile[$teller]};do
if [[ ! "${newteamfile[$teller]}" == *"${word}"* ]];then
printf "%-15.15s %s\n" "${oldteamfile[$teller]%%,*}:" "${word%,}"
gone=0
fi
done
done
(( $gone )) && echo " -"
echo
IFS=$ifs # Restore field selector to default
# Ask to save new teamlist to file
read -p "Bewaren nieuwe teamlijst? [J/n] " answer
[ -z "$answer" ] && answer="J"
case "$answer" in
[Jj]*) mv "$PWD/teamgrab.new" "$PWD/teamgrab.old";rm "$PWD/teamgrab.new";echo "Opgeslagen.";;
[Nn]*) rm "$PWD/teamgrab.new";echo "Niet opgeslagen.";exit 0;;
*) rm "$PWD/teamgrab.new";echo "Onverwacht antwoord, niet opgeslagen.";;
esac