#!/bin/sh ### BEGIN INIT INFO # Provides: nmbd # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # X-Start-Before: smbd # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start Samba NetBIOS nameserver (nmbd) ### END INIT INFO global PIDDIR := '/var/run/samba' global NMBDPID := "$PIDDIR/nmbd.pid" # clear conflicting settings from the environment unset TMPDIR # See if the daemons are there test -x /usr/sbin/nmbd || exit 0 source /lib/lsb/init-functions matchstr $1 { start { if init_is_upstart { exit 1 } global SERVER_ROLE := $[samba-tool testparm --parameter-name="server role" !2 >/dev/null | tail -1] if test $SERVER_ROLE = "active directory domain controller" { exit 0 } if test -n $[which testparm] { global NMBD_DISABLED := $[testparm -s --parameter-name='disable netbios' !2 >/dev/null] } if test $NMBD_DISABLED != Yes { log_daemon_msg "Starting NetBIOS name server" nmbd # Make sure we have our PIDDIR, even if it's on a tmpfs install -o root -g root -m 755 -d $PIDDIR if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/nmbd -- -D { log_end_msg 1 exit 1 } log_end_msg 0 } } stop { if init_is_upstart { exit 0 } log_daemon_msg "Stopping NetBIOS name server" nmbd start-stop-daemon --stop --quiet --pidfile $NMBDPID # Wait a little and remove stale PID file sleep 1 if test -f $NMBDPID && ! ps h $[cat $NMBDPID] > /dev/null { # Stale PID file (nmbd was succesfully stopped), # remove it (should be removed by nmbd itself IMHO.) rm -f $NMBDPID } log_end_msg 0 } restart|force-reload { if init_is_upstart { exit 1 } $0 stop sleep 1 $0 start } status { status_of_proc -p $NMBDPID /usr/sbin/nmbd nmbd exit $Status } * { echo "Usage: /etc/init.d/nmbd {start|stop|restart|force-reload|status}" exit 1 } } exit 0 (CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:PIDDIR) op:Equal rhs:{(/var/run/samba)} spids:[33])] spids: [33] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NMBDPID) op: Equal rhs: {($ VSub_Name "$PIDDIR") (/nmbd.pid)} spids: [36] ) ] spids: [36] ) (C {(unset)} {(TMPDIR)}) (AndOr children:[(C {(test)} {(-x)} {(/usr/sbin/nmbd)})(C {(exit)} {(0)})] op_id:Op_DPipe) (C {(.)} {(/lib/lsb/init-functions)}) (Case to_match: {($ VSub_Number "$1")} arms: [ (case_arm pat_list: [{(start)}] action: [ (If arms: [ (if_arm cond: [(Sentence child:(C {(init_is_upstart)}) terminator:)] action: [(C {(exit)} {(1)})] spids: [-1 86] ) ] spids: [-1 94] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SERVER_ROLE) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [ {(samba-tool)} {(testparm)} {(--parameter-name) (Lit_Other "=") (DQ ("server role"))} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [109] ) ] ) (C {(tail)} {(-1)}) ] negated: False ) ] ) left_token: spids: [98 117] ) } spids: [97] ) ] spids: [97] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$SERVER_ROLE"))} {(Lit_Other "=")} {(DQ ("active directory domain controller"))} {(Lit_Other "]")} ) terminator: ) ] action: [(C {(exit)} {(0)})] spids: [-1 137] ) ] spids: [-1 145] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other "[")} {(-n)} { (CommandSubPart command_list: (CommandList children:[(C {(which)} {(testparm)})]) left_token: spids: [155 159] ) } {(Lit_Other "]")} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NMBD_DISABLED) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(testparm)} {(-s)} {(--parameter-name) (Lit_Other "=") (SQ <"disable netbios">)} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [179] ) ] ) ] ) left_token: spids: [168 181] ) } spids: [167] ) ] spids: [167] ) ] spids: [-1 164] ) ] spids: [-1 184] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$NMBD_DISABLED"))} {(KW_Bang "!") (Lit_Other "=")} {(Yes)} {(Lit_Other "]")} ) terminator: ) ] action: [ (C {(log_daemon_msg)} {(DQ ("Starting NetBIOS name server"))} {(nmbd)}) (C {(install)} {(-o)} {(root)} {(-g)} {(root)} {(-m)} {(755)} {(-d)} {($ VSub_Name "$PIDDIR")} ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(start-stop-daemon)} {(--start)} {(--quiet)} {(--oknodo)} {(--exec)} {(/usr/sbin/nmbd)} {(--)} {(-D)} ) ] negated: True ) ] action: [(C {(log_end_msg)} {(1)}) (C {(exit)} {(1)})] spids: [-1 260] ) ] spids: [-1 273] ) (C {(log_end_msg)} {(0)}) ] spids: [-1 203] ) ] spids: [-1 281] ) ] spids: [77 78 285 -1] ) (case_arm pat_list: [{(stop)}] action: [ (If arms: [ (if_arm cond: [(Sentence child:(C {(init_is_upstart)}) terminator:)] action: [(C {(exit)} {(0)})] spids: [-1 297] ) ] spids: [-1 305] ) (C {(log_daemon_msg)} {(DQ ("Stopping NetBIOS name server"))} {(nmbd)}) (C {(start-stop-daemon)} {(--stop)} {(--quiet)} {(--pidfile)} {($ VSub_Name "$NMBDPID")}) (C {(sleep)} {(1)}) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(Lit_Other "[")} {(-f)} {($ VSub_Name "$NMBDPID")} {(Lit_Other "]")}) (Pipeline children: [ (SimpleCommand words: [ {(ps)} {(h)} { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {($ VSub_Name "$NMBDPID")})] ) left_token: spids: [357 361] ) } ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [363] ) ] ) ] negated: True ) ] op_id: Op_DAmp ) ] action: [(C {(rm)} {(-f)} {($ VSub_Name "$NMBDPID")})] spids: [-1 368] ) ] spids: [-1 386] ) (C {(log_end_msg)} {(0)}) ] spids: [288 289 396 -1] ) (case_arm pat_list: [{(restart)} {(force-reload)}] action: [ (If arms: [ (if_arm cond: [(Sentence child:(C {(init_is_upstart)}) terminator:)] action: [(C {(exit)} {(1)})] spids: [-1 410] ) ] spids: [-1 418] ) (C {($ VSub_Number "$0")} {(stop)}) (C {(sleep)} {(1)}) (C {($ VSub_Number "$0")} {(start)}) ] spids: [399 402 436 -1] ) (case_arm pat_list: [{(status)}] action: [ (C {(status_of_proc)} {(-p)} {($ VSub_Name "$NMBDPID")} {(/usr/sbin/nmbd)} {(nmbd)}) (C {(exit)} {($ VSub_QMark "$?")}) ] spids: [439 440 459 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {(echo)} {(DQ ("Usage: /etc/init.d/nmbd {start|stop|restart|force-reload|status}"))}) (C {(exit)} {(1)}) ] spids: [462 463 478 -1] ) ] spids: [70 74 480] ) (C {(exit)} {(0)}) ] )