You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@dolphinscheduler.apache.org by wenhe li <li...@gmail.com> on 2020/02/26 01:30:25 UTC
[Discussion] Support worker server to run Windows script
Run a program or script as another user, there is sudo -u in Unix-like, but
there is no sudo -u command in Windows, the nearest equivalent is runas
command.
*But can't pipe a password into runas, because it requests the
password from the terminal, not from stdin.*
So, I have to reimplement ProcessImpl.java, ProcessEnvironment.java and
ProcessBuilder.java for Windows.
First, for Windows, I will reimplement it by JNA:
ProcessBuilder.java: *copy and rewrite it*
ProcessEnvironment.java: *rewrrite it by JNA*
private static native String environmentBlock();
ProcessImpl.java: *rewrrite it by JNA*
private static native int getStillActive();private static native int
getExitCodeProcess(long handle);private static native void
waitForInterruptibly(long handle);private static native void
waitForTimeoutInterruptibly(long handle, long timeout);private static
native void terminateProcess(long handle);private static native
boolean isProcessAlive(long handle);private static synchronized native
long create(String cmdstr, String envblock, String dir, long[]
stdHandles, boolean redirectErrorStream)private static native long
openForAtomicAppend(String path) throws IOException;private static
native boolean closeHandle(long handle);
Finally, I will create new file in ds, like ProcessBuilderForWin32.java,
ProcessEnvironmentForWin32.java, ProcessImplForWin32.java
So, how about it?