servlets java在linux中执行命令
我在tomcat6中运行了一个servlet。我使用以下代码在中执行命令 ubuntu 运行时。getRuntime()。exec(“/usr/bin/wine cmd/c some.vbs”); 问题是tomcat6以“tomcat6”用户的身份运行程序 上面的java命令。因此,上述命令getErrorStream返回为 “葡萄酒:/home/randeel/。葡萄酒不属于您” 我已经使用用户“randeel”安装了“wine”。 有解决办法吗
谢谢,, 拉纳
# 1 楼答案
您有两种解决方案。 1.使用chmod a+x为wine授予适当的执行权限。 2.如果不想执行#1,则必须运行命令行,首先更改用户,然后运行应用程序。 命令su用户名 更改当前用户,但需要键入密码。要模拟输入密码的终端,可以使用expect脚本
然后,您可以作为不同的用户运行该命令。如果您打算使用这种方式,我建议您编写执行这两个操作的简短shell脚本,并从java运行该脚本
#2更为复杂。方法1似乎简单得多
# 2 楼答案
是:您必须切换用户。试一试
请注意,
sudo
将要求输入密码,除非您另行配置密码另一个更优雅的解决方案是运行一个小型服务器作为
randeel
,它等待网络连接。然后,它运行命令并通过网络连接返回输出。请参阅java.net.Socket
的文档