[Postfixbuch-users] distributed list and no clue
Ralf Ebeling
ralf-ebeling at despammed.com
Mo Feb 3 00:44:25 CET 2003
On 02.02.2003 15:23, Andreas Meyer wrote:
> Am Sun, 2 Feb 2003 14:02:35 +0100 schrieb Ralf Hildebrandt <Ralf.Hildebrandt at charite.de>:
>>alle:
>> user1,
>> user2,
>> ...
>>
>>(wichtig ist das fuehrende Leerzeichen, es dient zur Fortsetzung der
>>vorigen Zeile!)
>>
>
> Ich bin mit der Kunst des Programmierens leider nicht gesegnet. Ich
> kann einfache bash-scripte erstellen oder auch mal ein perl-script
> reparieren.
> if then else fi geht noch, das war's aber dann schon ;)
Kannst ja mal das hier probieren wenn es passt. Habe ich letzte Woche
für einen ähnlichen Zweck zusammengebastelt... primär um nach dem An-
legen eines neuen Users via Webmin ein Alias mit dem kompletten Namen
des Users zu erstellen.
Ralf
--- schnipp ---
#! /bin/sh
#
HOMEPATH=/home
USERALIASES=/etc/aliases.user
USERALIASES_TMP="$USERALIASES"
BIN_POSTALIAS=/usr/sbin/postalias
BIN_NEWALIASES=/usr/bin/newaliases
RUN_TIME=`date +"%d.%m.%Y, %H:%M:%S"`
echo "# " > $USERALIASES_TMP
echo "# Auto generated user aliases..." >> $USERALIASES_TMP
echo "# ($RUN_TIME)" >> $USERALIASES_TMP
echo "# " >> $USERALIASES_TMP
ADDRALL=""
ADDR_SR=""
OLD_IFS=$IFS
IFS=":"
while read usr passwd uid gid name rest; do
# skip comments and empty lines
case "$usr" in
\#*|"")
continue;
;;
esac
HOMEDIR="$HOMEPATH/$usr"
if [ -d $HOMEDIR ] && [ -n "$name" ]; then
forename=${name%[ ]*}
surename=${name#*[ ]}
if [ "$forename" == "$surename" ]; then
# user and name equals ?
if [ "$forename" == "$usr" ]; then
continue;
fi
echo -e "$forename:\t\t$usr" >> $USERALIASES_TMP
else
echo -e "$forename.$surename:\t$usr" >> $USERALIASES_TMP
# build 'group1'
if [ -z "$ADDRALL" ]; then
ADDRALL="$usr"
else
ADDRALL="$ADDRALL,\n $usr"
fi
# build 'group2'
if [ ! -e $HOMEDIR/location.* ]; then
if [ -z "$ADDR_SR" ]; then
ADDR_SR="$usr"
else
ADDR_SR="$ADDR_SR,\n $usr"
fi
fi
fi
fi
done < /etc/passwd
IFS=$OLD_IFS
if [ -n "$ADDRALL" ]; then
echo -e "#\n#" >> $USERALIASES_TMP
echo -e "group1:\t$ADDRALL" >> $USERALIASES_TMP
fi
if [ -n "$ADDR_SR" ]; then
echo -e "#\n#" >> $USERALIASES_TMP
echo -e "group2:\t$ADDR_SR" >> $USERALIASES_TMP
fi
if [ -r $USERALIASES_TMP ] && [ -x $BIN_POSTALIAS ] ; then
$BIN_POSTALIAS $USERALIASES_TMP
fi
echo "Done..."
exit 0
--- schnapp ---
Mehr Informationen über die Mailingliste Postfixbuch-users