Jetzt muß noch das Verzeichnis /usr/local/samba/bin angelegt werden und die Rechte wie oben vergeben.
In dieses Verzeichnis wird das Skript do_fax kopiert, und mit chmod 0777 do_fax für jedermann ausführbar gemacht (für nur ausführbar reicht auch 0111) )
#!/bin/sh
####################################################################
# Ein Script um per Samba zu faxen. Nach einer Mail von Michael A. Meiszl
# (mam@werries.de) [mgetty+sendfax/frontends/windows/] und einem Text von
# Gerhard Zuber [mgetty+sendfax/frontends/winword]
# Zusammengefuegt und erweitert von Rene Fertig
# Version 0.1.1d
####################################################################
# im Original ist hier noch die Funktionsweise (habe ich aber fuer die
#Internet seite rausgenommen
PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/local/samba/bin
TELEFONANLAGE=NEIN# braucht Amtsholung
DEBUG=JA
ACCOUNT=JA # Accounting schreiben
ACCFILE=/home/daten/sendfax/sambafax.txt
# account file auf einen oeffentlichen Ordner gelegt zur einsicht aller user
TMP=$1
USER=$2
RECHNER=$3
FAXERRORS=/tmp/faxerrors.$$
FAXADMIN=harald # User fuer Mail
# samba-user-name welcher der Fax-Admin ist
# Realname des User ermitteln, falls vorhanden
RNAME=`finger -lp $USER | awk -F: '/Name/ {print $3}'`
if [ -z $RNAME ]
then
RNAME=$USER
fi
#
# Faxnummer aus der Faxdatei herausfischen, die Zeichen -/() werden entfernt
#
NUMMER=`awk '{ IGNORECASE=1 } /FAX-Nr ?: ?[-0-9]*/ \
{ gsub(/[-/()]/,""); \
anfang=match($0,/ ?: ?/); \
anfang=anfang+match(substr($0,anfang),/[0-9]/)-1; \
ende=match(substr($0,anfang),/[^0-9]|$/)-1; \
printf ("%s",substr($0,anfang,ende)) \
}' $TMP`
export NUMMER TMP USER RNAME RECHNER FAXERRORS DEBUG TELEFONANLAGE
if [ "$DEBUG" = "JA" ]
then
cp $TMP /tmp/fax.input
(echo "NUMMER: $NUMMER"
echo "USER: $USER"
echo "RNAME: $RNAME" # ist im Orginal echo "RNAME: $ROCNAME"
echo "RECHNER: $RECHNER")>> /tmp/smbfax.debug
fi
if [ "$NUMMER" = "" ]
then
if [ -s $TMP ]
then
(
echo Das war wohl nichts $RNAME
echo
echo Um einen Fax zu versenden, muss im Dokument eine Zeile
echo "<Fax-Nr:0...>"
echo "auftauchen. Denken Sie auch an die Amtsholung (0,...) mit Pause!"
echo
echo "Aendere den Text und drucken Sie ihn nochmal."
) | smbclient -M $RECHNER -U FAXMANAGER 2>&1 >/dev/null
fi
rm -f $TMP
exit 0
fi
LEN=`expr length $NUMMER`
#
# Wenn die Nummer laenger ist als 3 Zeichen und der Dummlooser die Amts-
# holung vergessen hat, basteln wir noch ein "0," davor
#
if [ "$TELEFONANLAGE" = "JA" -a $LEN -gt 3 ]
then
X=`expr substr $NUMMER 1 2`
if [ ! "$X" = "0," ]
then
NUMMER=0,$NUMMER
fi
fi
#
# jetzt wird das Fax zum Versenden an faxspool gegeben.
# Erfolgsmails gehen per Default an FAXADMIN. U.U kann hier auch eine
# Mail an den eigentlichen Absender geschickt werden, abhaengig davon,
# ob sich aus dem Usernamen eine brauchbar Mailadresse machen laesst.
# z.B.: faxspool -q -f $USER@provider.de $NUMMER $TMP >$FAXERRORS 2>&1
# Ggf. ist es auch moeglich ein spezielles Programm zu starten, das die
# success bzw. failure Nachrichten schickt (siehe man faxrunq(1) )
#
#faxspool -q -f $FAXADMIN -F $USER $NUMMER $TMP >$FAXERRORS 2>&1
faxspool -q -f $USER -F $USER $NUMMER $TMP >$FAXERRORS 2>&1
if [ -s $FAXERRORS ]
then
(
echo Fehler beim Versenden des Faxes:
cat $FAXERRORS
) | smbclient -M $RECHNER -U FAXMANAGER 2>&1 >/dev/null
else
(
echo "Hallo $RNAME!"
echo "Das Fax an $NUMMER wurde erfolgreich angenommen."
echo "Der Versand erfolgt in wenigen Minuten."
) | smbclient -M $RECHNER -U FAXMANAGER 2>$1 >/dev/null
fi
if [ "$ACCOUNT" = "JA" ]
then
DATE=`date`
echo "User $USER ($RNAME) at host $RECHNER send fax to $NUMMER on $DATE" >> $ACCFILE
fi
if [ "$DEBUG" = "" ]
then
rm -f $TMP $FAXERRORS
else
(
date
set
echo "---------------------"
echo $*
echo "---------------------"
) >/tmp/smbfax.debug
fi
exit(0)
Als nächstes muß in der Datei /etc/samba/smb.conf noch folgender Eintrag( Freigabe ) getätigt werden.
[FAX]
zoomend = Fax-Printer am Server
Pacht = /var/spool/samba
Rad only = Es
pränatale = Es
publik = Es
print command = /usr/local/samba/bin/do_fax %s %U %m
browseable = yes
Nach einem Neustart des Samba-Servers mit
/etc/init.d/smb
ist die Fax-Freigabe bzw. der Fax-Drucker für alle im Netzwerk erreichbar.
