The scripts must be local.
If you need more clarification, you may need to check with the OpenVPN project directly.
Here is the option explained in their documentations.
–script-security level
This directive offers policy-level control over OpenVPN's usage
of external programs and scripts. Lower level values are more
restrictive, higher values are more permissive. Settings for
level:
0 -- Strictly no calling of external programs.
1 -- (Default) Only call built-in executables such as ifconfig,
ip, route, or netsh.
2 -- Allow calling of built-in executables and user-defined
scripts.
3 -- Allow passwords to be passed to scripts via environmental
variables (potentially unsafe).
OpenVPN releases before v2.3 also supported a method flag which
indicated how OpenVPN should call external commands and scripts.
This could be either execve or system. As of OpenVPN v2.3, this
flag is no longer accepted. In most *nix environments the
execve() approach has been used without any issues.
To run scripts in Windows in earlier OpenVPN versions you needed
to either add a full path to the script interpreter which can
parse the script or use the system flag to run these scripts.
As of OpenVPN v2.3 it is now a strict requirement to have full
path to the script interpreter when running non-executables
files. This is not needed for executable files, such as .exe,
.com, .bat or .cmd files. For example, if you have a Visual
Basic script, you must use this syntax now:
--up 'C:\Windows\System32\wscript.exe C:\Program\ Files\OpenVPN\config\my-up-script.vbs'
Please note the single quote marks and the escaping of the back-
slashes () and the space character.
The reason the support for the system flag was removed is due to
the security implications with shell expansions when executing
scripts via the system() call.