[Eisfair_dev] [e1] Samba 9.0.0 (Status 'unstable')

Peter Bäumer peter at baeumer.dd-dns.de
Mo Feb 24 13:11:58 CET 2020


Glück Auf! Thomas,

Am 21.02.2020 um 21:16 schrieb Thomas Bork:
> Am 21.02.2020 um 18:57 schrieb Peter Bäumer:
> 

>> init-Skript schreiben.
> 
> Hab ich. Wertet keine Konfiguration aus, startet, stoppt und gibt den Status aus.
>
Hab jetzt auch eins ;)
  

>> Skript für Logrotate?
> 
> Klar
Lohnt fast gar nicht da der Dämon nicht geschwätzig ist.
Im Log steh bei mir nur:
     2020-02-24 10:28:46,961:wsdd WARNING(pid 30962): no interface given, using all interfaces

Es wird etwas besser wenn --verbose angeben ist:
beim Start:
     2020-02-24 11:18:45,057:wsdd WARNING(pid 1387): no interface given, using all interfaces
     2020-02-24 11:18:45,057:wsdd INFO(pid 1387): using pre-defined UUID 0776c8a5-eec8-538f-84c9-8373accf31fa
     2020-02-24 11:18:45,064:wsdd INFO(pid 1387): joined multicast group ('239.255.255.250', 3702) on 172.31.0.157%eth0
     2020-02-24 11:18:45,068:wsdd INFO(pid 1387): joined multicast group ('ff02::c', 3702, 22364, 2) on fe80::31ff:fe00:157%eth0
     2020-02-24 11:18:45,069:wsdd INFO(pid 1387): chrooted successfully to /var/lib/wsdd
     2020-02-24 11:18:45,069:wsdd INFO(pid 1387): running as nobody:nogroup (65534:65534)
     2020-02-24 11:18:45,097:wsdd INFO(pid 1387): 172.31.1.1 - - "POST /0776c8a5-eec8-538f-84c9-8373accf31fa HTTP/1.1" 200 -
     2020-02-24 11:18:45,134:wsdd INFO(pid 1387): fe80::21a0:7b0b:89c0:d7d0%eth0 - - "POST /0776c8a5-eec8-538f-84c9-8373accf31fa HTTP/1.1" 200 -
     2020-02-24 11:18:45,155:wsdd INFO(pid 1387): 172.31.1.1 - - "POST /0776c8a5-eec8-538f-84c9-8373accf31fa HTTP/1.1" 200 -
     2020-02-24 11:18:45,172:wsdd INFO(pid 1387): 172.31.1.1 - - "POST /0776c8a5-eec8-538f-84c9-8373accf31fa HTTP/1.1" 200 -
     2020-02-24 11:18:45,186:wsdd INFO(pid 1387): 172.31.1.1 - - "POST /0776c8a5-eec8-538f-84c9-8373accf31fa HTTP/1.1" 200 -
beim Stop:
     2020-02-24 11:22:39,170:wsdd INFO(pid 1387): received SIGTERM, tearing down
     2020-02-24 11:22:39,170:wsdd INFO(pid 1387): shutting down gracefully...
     2020-02-24 11:22:40,308:wsdd INFO(pid 1387): Done.


>> Welche Optionen ins Menü wandern soll bin ich mir auch noch nicht sicher.
>> -c CHROOT, --chroot CHROOT directory to chroot into
>>    Will hoffen das das mit der Option -c geht, hab noch nicht feststellen können es geht oder nicht.
> 
> Geht, kann immer gesetzt werden.

Hab es jetzt auch im Log gesehen :)
Ist /var/lib/wsdd der passende Oedner für das chroot ?
  

>> -H HOPLIMIT, --hoplimit HOPLIMIT  hop limit for multicast packets (default = 1)
>>    Ein Hop sollte im allgemeinen ausreichen, gib es Szenarios wo man mehr braucht?
> 
> Systeme mit mehreren Netzwerkkarten?
Dürfte doch nur von Interesse sein wenn es über einen Router geht soll?
und in einer zweiten Kollisionsdomäne verfügbar sein soll?
  
>> -U UUID, --uuid UUID  UUID for the target device
>>    Keine Ahnung für was das gut sein soll :(
> 
> Die sollte für ein System immer gleich sein, bildet wsdd aus dem Hostnamen, wenn man nix setzt.
Wenn das wsdd automatisch macht braucht man das auch nicht im Menü konfigurieren :)

> 
>> -w WORKGROUP, --workgroup WORKGROUP  set workgroup name (default WORKGROUP)
>>    Der Workgroup Name kann aus der /etc/config.d/samba ermittelt werden (SAMBA_WORKGROUP)
> 
> Parst das init-Skript aus testparm.
> 
>> -d DOMAIN, --domain DOMAIN  set domain name (disables workgroup)
>>    Kann der Domainname auch aus der /etc/config.d/samba ermittelt werden?
> 
> Funktioniert sowohl mit Workgroup als auch Domäne.

Gehe ich richtig in der Annahme wenn server role nicht ROLE_STANDALONE ist
dann ist ein Domänencontroller (PDC) oder Domän-Memberserver ?

   if testparm -s 2>&1 |grep -q "ROLE_STANDALONE" ; then
       SERVER_ROLE="--workgroup"
   else
       SERVER_ROLE="--domain"
   fi

Wenn ich das Python Skript richtig lese wäre der einzige unterschied
das der Hostname bei Workgoup in Großbuchstaben dargestellt wird und bei Domain und kleinen.

Für das Eis-Menü hätte ich bis jetzt:
   START_WSDD=yes|no
   WSDD_VERBOSE=yes|no
   WSDD_LOG_COUNT='10'
   WSDD_LOG_INTERVAL='monthly'

und die Links für start|stop|restart|status

Optional:
   Wäre toll wenn Samba bei einer Konfigurationsänderung den wssd Dämon mit Restarten könnte,
   damit wsdd Änderungen sofort mit bekommt.

MfG
   Peter B.


/etc/init.d/wsdd (noch im Bastel status)
#!/bin/bash

#. /etc/config.d/wsdd
. /etc/init.d/functions
packageName='wsdd'
CHROOT="/var/lib/wsdd"    # --chroot    -c
USER="nobody:nogroup"     # --user      -u
INTERFACE=""              # --interface -i
HOPLIMIT=""               # --hoplimit  -H
UUID=""                   # --uuid      -U
WORKGROUP="$(testparm -s --parameter-name workgroup 2>/dev/null)"
LOG_DIR="${CHROOT}/var/log"
#-n HOSTNAME
#--preserve-case
#--nohttp
#--ipv4only
#--ipv6only

# check WORKGROP oder DOMAIN                                                   #
if testparm -s 2>&1 |grep -q "ROLE_STANDALONE" ; then
     SERVER_ROLE="--workgroup"
else
     SERVER_ROLE="--domain"
fi

# create Lod dir                                                               #
[ -d ${LOG_DIR} ] || mkdir -p ${LOG_DIR}

START_WSDD=yes
WSDD_VERBOSE=yes

if [ ${WSDD_VERBOSE} = "yes" ]; then
     VERBOSE="--verbose"
else
     VERBOSE=""
fi

_do_start ()
{
     if ${forcestart:-false}; then
         START_WSDD=yes
     fi

     if [ "${START_WSDD}" = 'yes' ]; then
         cd ${CHROOT}
         boot_mesg " * Starting wsdd ... "
         if pidof python3 bin/wsdd > /dev/null 2>&1 ; then
             if ! ${_quiet}; then
                 CURS_UP="\\033[1A\\033[0G"
                 echo -e "${CURS_UP} * Starting wsdd ... is still running with Process ID(s) $(pidof python3 bin/wsdd)."
                 echo_warning
             fi
         else
             bin/wsdd.py ${SERVER_ROLE} ${WORKGROUP} --chroot ${CHROOT} --user ${USER} >> ${LOG_DIR}/wsdd.log 2>&1 &
             RC=$?
             a=0
             PID=""
             while [ -z $PID ]
             do
                 let a=$a+1
                 if [ $a = 10 ];then
                     break
                 fi
                 PID=$(pidof python3 bin/wsdd)
             done
             if [ -n "${PID}" ]; then
                 echo "${PID}" > /run/wsdd.pid
                 echo_ok
             else
                 echo_warning
                 [ -f /run/wsdd.pid ] && rm /run/wsdd.pid
             fi
         fi
     fi
}

_do_stop ()
{
     boot_mesg " * Stopping wsdd ..."
     if pidof python3 bin/wsdd > /dev/null 2>&1 ;then
         kill $(pidof python3 bin/wsdd )
         RC=$?
         while pidof python3 bin/wsdd > /dev/null 2>&1
         do
             sleep .25
             let a=$a+1
             if [ $a = 10 ];then
                 RC=3
             fi
         done
         if [ "$RC" = "0" ];then
             echo_ok
         else
             echo_warning
         fi
     else
         if ! ${_quiet}; then
             echo -e "${CURS_UP} * Stopping wsdd ... is not running"
             echo_warning
         fi
     fi
     [ -f /run/wsdd.pid ] && rm /run/wsdd.pid
}


_do_status ()
{
     if pidof python3 bin/wsdd > /dev/null 2>&1 ; then
         echo "wsdd is running with Process ID(s) $(pidof python3 bin/wsdd)."
     else
         echo "wsdd is not running."
         [ -f /run/wsdd.pid ] && rm /run/wsdd.pid
     fi
}

_do_usage ()
{
     echo "Usage: $0 [-q|--quiet] {start|forcestart|stop|restart|status}"
}

#------------------------------------------------------------------
# main
#------------------------------------------------------------------
while [ ${#} -gt 0 ]
do
     case "${1}" in
         -q|--quiet)
             _quiet=true
             shift
         ;;
         *)
             _action=${1}
             shift
         ;;
     esac
done

case "${_action}" in

     start)
         _do_start
     ;;

     forcestart)
         forcestart=true
         _do_start
     ;;
     stop)
         _do_stop
     ;;

     restart)
         _do_stop
         while pidof python3 bin/wsdd > /dev/null 2>&1
         do
             sleep .25
             let a=$a+1
             [ $a = 10 ] && exit 2
         done
         _do_start
     ;;

     status)
         _do_status
     ;;

     *)
         _do_usage
         exit 1
     ;;
esac

exit 0


Mehr Informationen über die Mailingliste Eisfair_dev