Thank you. I made the change. VS Code didn't say anything about it when I put it through Prettier.I'd suggest a couple of simple changes in your modified script:
FROM:
Bash:if [ $1 == "DNS" ]; then ... ... elif [ $1 == "VPN" ]; then ... ...
TO:
Bash:if [ "$1" = "DNS" ]; then ... ... elif [ "$1" = "VPN" ]; then ... ...
Your original "if" statements will work on the router without real problems; it's just that the current syntax triggers my "S/W Developer's OCD tendencies."
For example, try calling your current script *as is* manually *without* any arguments, or with an argument like "DNS VPN" (yes, blank space in between), and see for yourself what you get in such cases.
Bash:/jffs/scripts/call-monitors.sh "DNS VPN"
Yeah, nothing "bad" really happens; it's simply a couple of runtime errors on each call without adverse effects. Granted, those are not the expected input and are unlikely to happen in your particular use case; but any test errors, however minor, are "frowned upon" in my world because the source code would not be considered "clean code."
Obviously, you're free to take or ignore my advice as you deemed appropriate.
Also, I had another power blip here in Costa Rica last night. As a result, the router restarted and everything came up great without issues, including VPNMON and DNSMON. I'm pretty convinced the original issue (i.e. red Internet light on the router and no ability to log into the router via SSH or WebGUI) is caused by routing the DNS through the VPN. I suspect the router is using DNS to perform some checks before the VPN connection is established; however, because VPN Director policies require that the DNS traffic goes through the VPN, the router gets stuck waiting for something that can't happen.
Sadly, this means that the streaming services once again know that I'm using a VPN. When I had the rules in place, everything worked splendidly until a reboot.