[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