Need help with rc.d script

Ian Smith smithi at nimnet.asn.au
Tue Nov 7 17:49:19 UTC 2017


On Wed, 8 Nov 2017 02:38:54 +1100, Ian Smith wrote:

 >  >    # This is the continuous loop checking the current ip address to
 >  >    # to determin if it changed.
 >  >    while [ 1 ]; do
 > 
 > More portable (for any shell) is 'while true; do' .. 
 > 
 >  >      # Get the IP address assigned to that NIC device name.
 >  >      nic_ip="$(ifconfig $nic_devicename inet | \
 >  >      grep -o "inet.*" | cut -d ' ' -f 2)"

More problematic and unnecessary double quotes I missed before ..

 >  >      #echo "nic_ip2 = ${nic_ip}"
 >  > 
 >  >      if [ "${prev_ip}" != "${nic_ip}" ]; then
 >  >        # Update dynamic DNS hosting site with new ip address.
 >  >        website="https://dynamicdns.park-your-domain.com/update?"
 >  >        dyn_host="host=home-fbsd&domain=host.xxxxxxx.com"
 >  >        password="&password=a3e0ffc2274746b29ceaf126d59e51c1"
 >  >        url="$website$dyn_host$password"
 >  >        #echo "$url"
 >  >        /usr/local/bin/wget -O /var/log/namecheap.dynip.update.log -q "$url"
 >  >        #echo "rtn-code = $?"
 >  >        if [ $? -ne 0 ]; then
 >  >          echo "Error: /usr/local/bin/wget command failed."
 >  >          exit 3
 >  >        fi
 >  >      #echo "${nic_ip}" > ${prev_ip_file}
 >  >      prev_ip="${nic_ip}"
 >  >      fi
 >  >      sleep ${elapse_time}
 >  >    done
 > 
 > You do NOT need to use daemon, all you need to do is replace done with
 > 
 >     done &
 > 
 > and perhaps test to be clear that's working,
 > 
 >     echo "dynip script done"
 >     exit 0
 > 
 > So that the script and so run_rc_command will complete, leaving the 
 > "while .. done &" subshell running in background.

On second thoughts, 'while .. done' in this particular context might not 
run in a subshell.  If the above method doesn't work, force that section 
to run in a specific subshell in background, like so:

	( while true; do
	    [..]
	done ) &

	echo that worked
	exit 0

cheers, Ian


More information about the freebsd-questions mailing list