clamd not changing user in freebsd

After some upgrade of clamav it no longer started as the proper user. They try to start as the default clamav user which does not work for me.
This is the error:

Starting clamav_freshclam.
ERROR: Can't open /var/log/clamav/freshclam.log in append mode (check permissions!).
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
/usr/local/etc/rc.d/clamav-freshclam: WARNING: failed to start clamav_freshclam

and

# /usr/local/etc/rc.d/clamav-clamd start    
Starting clamav_clamd.
ERROR: LOCAL: Socket file /var/run/clamav/clamd could not be bound: Permission denied

I figured out what went wrong. the FreeBSD rc script starts clamd as clamav so then clamd itself does not have the power to change users. If you add this to your /etc/rc.conf, it may fix your problem as it did mine:

clamav_clamd_user="vscan"
clamav_freshclam_user="vscan"

Obviously vscan should be whatever user you need to start the services as. Note that if you put “root” in there, then that makes it so clamd and freshclam have the power to change users (so if it is in the config they can do that now).

SMB/samba uptime monitoring

I wanted to be able get a notification when a SMB/samba server went down so I set up a script on a FreeBSD server. This script will connect to a SMB share and check for the existence of a file/folder on that share.
If it does not exist then it will E-mail you. I put this in /home/username/bin
and it needs a tmp directory in /home/username/bin/tmp (or modify the script to use some other directory).
Configure the variables at the beginning for your use.

I named this file check_fileserver_smb.sh

#!/bin/sh

PATH=$PATH:/usr/local/bin:/usr/bin

SMBUSERNAME='myusername'
SMBPW='mypassword'
SERVERTOCHECK='fileserver'
SERVICETOCHECK='archive'
#Note that this needs to be only the first word of the folder name (spaces not supported)
FOLDERTOCHECK='Photos'
NOTIFYEMAIL='youremail@maildomain.comm'

cd ~/bin

FOLDERCHECK=$( smbclient --user=$SMBUSERNAME -c "ls" \\\\$SERVERTOCHECK\\$SERVICETOCHECK $SMBPW 2>/dev/null | grep $FOLDERTOCHECK | cut -f 2 -w )

if [ "$FOLDERCHECK" == "$FOLDERTOCHECK" ]; then
	#echo "Yep, $SERVERTOCHECK samba is up."

	if [ -e tmp/uptime-$SERVERTOCHECK-$SERVICETOCHECK-down ]; then
		rm tmp/uptime-$SERVERTOCHECK-$SERVICETOCHECK-down
		#echo "Back up!"
		date | mail -s "Service Up: $SERVERTOCHECK-$SERVICETOCHECK samba" $NOTIFYEMAIL
	fi
else
	#echo "No, $SERVERTOCHECK samba is down!"
	if [ -e tmp/uptime-$SERVERTOCHECK-$SERVICETOCHECK-down ]; then
		#echo "still down..."
	else
		touch tmp/uptime-$SERVERTOCHECK-$SERVICETOCHECK-down
		date | mail -s "Service Down: $SERVERTOCHECK-$SERVICETOCHECK samba" $NOTIFYEMAIL
	fi
fi

In /etc/crontab I have this to check every 5 minutes:

*/5 * * * * username /home/username/bin/check_fileserver_smb.sh

PS The script would need to be modified to support spaces in any server names, etc.

3D Graphs

I am taking multivariable calculus and I wanted some 3D graph templates and I did not really like what I saw browsing around so I made a couple word documents. The markings are really close to 1/4″ and I have two versions. One has numbers up to ten and the other does not.

3D Graph with number labels, 0.25inch markings

3D Graph No numbers, 0.25inch markings

The files are bigger than they really need to be because I did not optimize the images much.