nsdo now returns better error messages. For instance, if a stat() fails,
it gives the filename in the error message.
I've also tweaked my vpn suggestions to re-use the same network
namespaces across openvpn client restarts. Before, the network namespace
was added and removed in the vpn-ns script, but because that ran for
every start/stop of the openvpn client, sometimes the network namespace
in which an application was running would get 'stale.'
Specifically, if Firefox was running in my VPN's network namespace, but
I suspended my laptop, the vpn-ns script would create a new network
namespace when the computer came out of suspend and the openvpn client
started up again. So, /run/netns/vpn (for example) would point to
namespace 12345679, where openvpn was running, while firefox would be
running in namespace 12345678.
The fix -- to use a separate systemd service to create the namespaces --
just makes sense, and I should've done it this way in the first place.