Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../.././../../.././../etc/firewall/restpf.20191029
Real path: /etc/firewall/restpf.20191029
Zurück
#!/bin/sh # # restpf # Jan-Peter Bell # # Version: 1.3 # Tue Jun 4 11:36:45 CEST 2019 # Wed Jul 24 10:06:45 CEST 2019 # Tue Jul 30 09:33:40 CEST 2019 # # bilden PF-Regeln fuer NFS 3 und 4 und laden der Regeln # NAME=`basename $0` BASE=`dirname $0` cd $BASE BASE=`pwd` PFBASE=$BASE/pf.conf.base PFBASENFS4=$BASE/pf.conf.base.nfs4 PFBASEBLOCK=$BASE/pf.conf.base.block PFCONF=$BASE/pf.conf PFCONFT=$BASE/pf.conf.err # default: kein NFS3 NFS3=0 # default: kein NFS4 NFS4=0 # if [ -f $BASE/NFS4 ] ; then NFS4=1 fi if [ -f $BASE/NFS3 ] ; then NFS3=1 # NFS4-Regeln werden bei NFS3 automatisch mit erzeugt NFS4=0 fi GAWK=/usr/bin/gawk if [ ! -x $GAWK ] ; then GAWK=/opt/csw/bin/gawk fi # Basis-Regelfile erstellen echo "#" >$PFCONFT echo "# erzeugt von $BASE/restpf am: `/usr/bin/date`" >>$PFCONFT echo "#" >>$PFCONFT sed "s?BASEDIR?$BASE?" $PFBASE >>$PFCONFT if [ $NFS4 -eq 1 ] ; then echo "#" >>$PFCONFT echo "# fuer NFS4 aus $PFBASENFS4" >>$PFCONFT cat $PFBASENFS4 >>$PFCONFT fi if [ $NFS3 -eq 1 ] ; then # testen ob RPC ueberhaupt enabled NORPC=`/usr/bin/svcs -p svc:/network/rpc/bind | /usr/bin/grep disable | /usr/bin/wc -l` if [ $NORPC -ne 1 ] ; then # warten auf online fuer enabled Dienste for SERVICE in svc:/network/rpc/bind svc:/network/nfs/server:default svc:/network/nfs/client:default do # Dienststatus abfragen STAT=`/usr/bin/svcs -p $SERVICE | /usr/bin/grep disable | /usr/bin/wc -l` if [ $STAT -eq 1 ] ; then # Dienst disabled continue fi # warten auf online SERV=`/usr/bin/svcs -p $SERVICE | /usr/bin/grep online |/usr/bin/wc -l` CNT=1 while [ $SERV -ne 1 -a $CNT -lt 30 ] do CNT=`expr $CNT + 1` /usr/bin/sleep 1 SERV=`/usr/bin/svcs -p $SERVICE | /usr/bin/grep online |/usr/bin/wc -l` done done fi if [ $NORPC -eq 1 ] ; then # nur NFS4, RPC laeuft nicht echo "# rpcbind ist disabled, nur NFS4 zulassen" >$PFCONFT echo "# fuer NFS4 aus $PFBASENFS4" >$PFCONFT cat $PFBASENFS4 >>$PFCONFT else cat <<EOFNFS4 >>$PFCONFT # # genriert aus $BASE/restpf # ############################### # NFS-Server Version 3 und 4 # ############################### # fuer NFS4 pass in quick on \$ext_if proto tcp from <pool_2> to <pool_3> port 111 pass in quick on \$ext_if proto udp from <pool_2> to <pool_3> port 111 pass in quick on \$ext_if proto tcp from <pool_100> port 2049 to <pool_1> port 0 >< 1024 pass in quick on \$ext_if proto udp from <pool_100> port 2049 to <pool_1> port 0 >< 1024 # EOFNFS4 echo "# fuer NFS3" >> $PFCONFT for i in `/usr/bin/rpcinfo -p | $GAWK '$0 !~ "program" { print $4; }' | /usr/bin/sort -u` do echo "# `/bin/rpcinfo -p | /bin/grep $i | /bin/head -1" >> $PFCONFT echo "pass in quick on \$ext_if proto tcp from <pool_100> to <pool_1> port $i" >> $PFCONFT echo "pass in quick on \$ext_if proto udp from <pool_100> to <pool_1> port $i" >> $PFCONFT done echo "# Ende NFS" >> $PFCONFT echo "# " >> $PFCONFT fi fi # # nicht ins Protokoll # cat $PFBASEBLOCK >> $PFCONFT # # neue Regeln test und laden # /usr/sbin/pfctl -n -f $PFCONFT if [ $? -eq 0 ] ; then # neue Regeln fehlerfrei mv $PFCONFT $PFCONF echo "$PFCONF fehlerfrei erstellt." else echo "Neue Regeln in $PFCONFT fehlerhaft." echo "Benutze altes $PFCONF." fi if [ "$NAME" != "genpf" ] ; then /usr/sbin/pfctl -F rules /usr/sbin/pfctl -F Tables -f $PFCONF echo "Rules und Tables neu geladen." fi #