试图写能够运行UNIX命令作为不同UNIX用户的Java程序。我有用户的密码,我知道我要运行的命令,但该命令必须按该用户运行 - 所以我必须先登录,该用户。运行UNIX命令为不同的用户,从Java
例如:假设我们有一个用户,吉姆,谁愿意看到什么在bob的主目录,(无论何种原因)吉姆有权访问而鲍勃不执行LS。 我们目前以bob的身份登录。以下是我们可以做的事情:
[email protected]$ su jim && ls ~bob
问题是,我们得到提示输入jim的密码。由于这是从Java程序运行的,即
Process p = Runtime.getRuntime().exec("su jim && ls ~bob");
我们得到提示输入jim的密码并挂断。 我们知道吉姆的密码。但是,我无法输入。
此外,我们不能使用Expect脚本(没有安装它),我们不能成为超级用户。我也看了成使用SSH来试试这个,因为我们可以在技术上做到
[email protected]$ ssh [email protected] "ls ~bob"
但这也因为我没有权限设置密码的SSH不起作用。
我最后的努力是尝试使用Java库的SSH库,因为密码可供Java程序使用,我将可以使用该密码登录(并执行正确的命令)。但是因为我要在同一台主机上运行,所以看起来好像过分了。
有什么建议吗?
P.S:Java版本1.4.2,无法升级; AIX UNIX 5.3。
您是否能够在不使用第三方库的情况下找到解决方法,如果可以,请分享一下? – HyperioN 2017-07-12 05:36:57