gpt4 book ai didi

java - Unix命令become、cd和ls -la通过java代码运行

转载 作者:行者123 更新时间:2023-12-02 12:47:21 26 4
gpt4 key购买 nike

我应该连接到 Unix 服务器,然后转到特定文件夹(有访问限制)并从那里获取文件详细信息。同样,我编写的代码是

try{

Session session = new JSch().getSession("username", "host");
session.setPassword("password");
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();

Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand("cd a/b/node01/c.ear && ls -la");
channel.connect();
channel.run();
InputStream in = channel.getInputStream();

System.out.println(channel.isConnected());

byte[] tmp = new byte[1024];
while (true)
{
while (in.available() > 0)
{
int i = in.read(tmp, 0, 1024);
if (i < 0)
break;
System.out.print(new String(tmp, 0, i));
}
if (channel.isClosed())
{
System.out.println("exit-status: " + channel.getExitStatus());
break;
}

}



channel.disconnect();
session.disconnect();
}
catch(Exception exception){
System.out.println("Got exception "+exception);
}

我没有获得所提供位置中存在的文件列表。我得到的输出是

正确

退出状态:1

如何获得所需的输出?

最佳答案

不要使用 shell 命令来检索文件信息。使用SFTP!

Channel channel = session.openChannel("sftp");
channel.connect();

ChannelSftp c = (ChannelSftp)channel;
java.util.Vector vv = c.ls("/a/b/node01/c.ear");

for (int i = 0; i < vv.size(); i++)
{
System.out.println(vv.elementAt(i).toString());
}

参见http://www.jcraft.com/jsch/examples/Sftp.java.html

<小时/>

关于“exec” channel 的代码:

关于java - Unix命令become、cd和ls -la通过java代码运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44716307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com