使用';成为';Java JSch程序中访问受限目录的命令

使用';成为';Java JSch程序中访问受限目录的命令,java,shell,unix,ssh,jsch,Java,Shell,Unix,Ssh,Jsch,正在使用Unix服务器。。。我的要求是读取Unix服务器上/a/b/c/node01/d.ear位置的文件名,我已经通过java程序执行了同样的操作。问题是目录a是一个受限目录,只能由某些用户访问。在Unix端,我首先发出been命令,如been a,然后提供密码,然后使用cd命令,到达d.ear目录,然后查看文件名 如何通过Java程序实现所有这些 我不介意我的Java程序调用一个shell脚本,该脚本访问受限目录,然后到达d.ear,获取文件名并将其返回给Java程序。我们有办法做到这一点吗

正在使用Unix服务器。。。我的要求是读取Unix服务器上
/a/b/c/node01/d.ear
位置的文件名,我已经通过java程序执行了同样的操作。问题是目录
a
是一个受限目录,只能由某些用户访问。在Unix端,我首先发出
been
命令,如
been a
,然后提供密码,然后使用
cd
命令,到达
d.ear
目录,然后查看文件名

如何通过Java程序实现所有这些

我不介意我的Java程序调用一个shell脚本,该脚本访问受限目录,然后到达
d.ear
,获取文件名并将其返回给Java程序。我们有办法做到这一点吗?可能在脚本中发出BENG命令(从Java程序调用),并且在调用脚本时提供BENG命令后询问的密码作为参数

这种方法可行吗?我对Unix命令和JSch库非常陌生。请提供代码或任何其他替代解决方案

谢谢

As,您的
been
命令的行为(从接口/API的角度来看)似乎与common*nix
su
sudo
相同

因此,使用与这些相同的解决方案。关于堆栈溢出有很多问题,包括如何使用JSch的
su
/
sudo

甚至还有一个官方的JSch示例
Sudo.java

简言之:

  • 执行
    been
    命令
  • 向其输入提供密码
  • 假设
    been
    启动一个新的shell(如
    su
    sudo
    do),您将要在提升环境中执行的命令馈送到
    been
    输入(与密码相同)

向我们展示您的代码+向我们展示匹配的交互式SSH会话副本。java端的代码与您给出的链接中提到的相同:“您必须在
setCommand
调用中将
sudo
替换为
been
!替换如下:((ChannelExec)channel).setCommand(“变成-S-p””+命令);收到提示“Enter command,execed with sudo”,“printenv sudo_USER”时提供的输入是:BEN cussdv01 O/P是:用法:BEN或您可以执行:BEN-列出此列表将列出您在此服务器上有权访问的帐户退出状态:1Come on!想一想!这不是,你在壳牌做什么!您正在执行以下操作:
(ChannelExec)channel.setCommand(“变成cussdv01”)我不能准确,因为你的评论很难阅读。特别是不清楚什么是单独的线路。