@bmeeks I solved it by copying both the curl and sh binaries into the chrooted folder and specifying the path to them directly:
mkdir -p /var/dhcpd/bin
mkdir -p /var/dhcpd/usr/local/bin
cp /bin/bash /var/dhcpd/bin/
cp /usr/local/bin/curl /var/dhcpd/usr/local/bin/
Then in my /var/dhcpd/etc/dhcp_update.sh script:
#!/bin/sh
BASE_URL="http://your-web-server.com/your-endpoint"
EVENT_TYPE="$1"
IP_ADDRESS="$2"
MAC_ADDRESS="$3"
case "$EVENT_TYPE" in
"1")
ONLINE_STATE="online"
;;
"2"|"3")
ONLINE_STATE="offline"
;;
*)
ONLINE_STATE="unknown"
;;
esac
URL="${BASE_URL}?ip=${IP_ADDRESS}&mac=${MAC_ADDRESS}&state=${ONLINE_STATE}&event=${EVENT_TYPE}"
echo "DHCP Announce: $URL"
/usr/local/bin/curl -X GET "$URL"
It aborted with exit code 6, which means that cURL couldn't resolve the hostname (good news!). I still haven't tested this with my proper endpoint, but I think it will work now.