当使用JSch通过Java执行时,某些Unix命令失败并显示“... not found”
我有一段连接到Unix服务器并执行命令的代码。
我一直在尝试简单的命令,他们工作正常。
我能够登录并获得命令的输出。
我需要通过Java运行Ab-initio图。
我正在使用此air sandbox run graph
命令。
当我使用SSH客户端登录并运行命令时,它运行正常。我能够运行图表。但是,当我尝试通过Java运行命令时,它会给我一个“未找到空气”的错误。
对JSch支持的Unix命令有什么限制吗?
知道为什么我无法通过我的Java代码运行命令吗?
这是代码:
public static void connect(){ try{ JSch jsch=new JSch(); String host="*****"; String user="*****"; String config = "Host foo\n"+ " User "+user+"\n"+ " Hostname "+host+"\n"; ConfigRepository configRepository = com.jcraft.jsch.OpenSSHConfig.parse(config); jsch.setConfigRepository(configRepository); Session session=jsch.getSession("foo"); String passwd ="*****"; session.setPassword(passwd); UserInfo ui = new MyUserInfo(){ public boolean promptYesNo(String message){ int foo = 0; return foo==0; } }; session.setUserInfo(ui); session.connect(); String command="air sandbox run <graph-path>"; Channel channel=session.openChannel("exec"); ((ChannelExec)channel).setCommand(command); channel.setInputStream(null); ((ChannelExec)channel).setErrStream(System.err); InputStream in=channel.getInputStream(); channel.connect(); byte[] tmp=new byte[1024]; while(true){ while(in.available()>0){ int i=in.read(tmp, 0, 1024); if(i<0)break; page_message=new String(tmp, 0, i); System.out.print(page_message); } if(channel.isClosed()){ if(in.available()>0) continue; System.out.println("exit-status: "+channel.getExitStatus()); break; } try{Thread.sleep(1000);}catch(Exception ee){} } channel.disconnect(); session.disconnect(); } catch(Exception e){ System.out.println(e); }}
大话西游666
明月笑刀无情
HUH函数