我试图在远程机器上执行多个命令,虽然SSH使用JSch库。
我正在使用两台远程机器,比方说RM1和RM2
能够执行以下步骤,
无法执行此步骤,1。一旦我将连接到远程机器RM2后,这将无法执行任何命令。
请告诉我是否有人能在这方面帮助我。
我尝试了以下代码:
String host="IP";
String user="username";
String password="password";
String command1="pwd";
String command2="ssh -tt user@ip";
String command3="pwd";
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);
session.connect();
System.out.println("Connected");
Channel channel1=session.openChannel("exec");
((ChannelExec)channel1).setCommand(command1;command2;command3);
channel1.setInputStream(null);
((ChannelExec)channel1).setErrStream(System.err);
InputStream in1=channel1.getInputStream();
channel1.connect();
byte[] tmp=new byte[1024];
while(true){
while(in1.available()>0){
int i=in1.read(tmp, 0, 1024);
if(i<0)break;
System.out.print(new String(tmp, 0, i));
}
if(channel1.isConnected()){
System.out.println("exit-status: "+channel1.getExitStatus());
break;
}
try{Thread.sleep(1000);}catch(Exception ee){}
}
channel.disconnect();
session.disconnect();
System.out.println("DONE");
尝试执行pwd;ssh-ttuser@ip;pwd
在连接到RM1的普通SSH终端客户端中。它不会工作,所以在Java中也不会工作。
要执行“跳转”,您应该使用端口转发(请参阅JSchJumpHosts
示例),而不是在跳转服务器上执行ssh
。
问题内容: 我试图通过这样的本地服务器上的ssh命令在远程linux服务器上执行命令: ssh myremoteserver’类型ttisql’ 其中ttisql是我的远程计算机路径上的可执行文件。 运行此命令的结果是: bash:第0行:类型:ttisql:未找到 当我只是先连接并执行以下操作: ssh myremoteserver 然后输入命令: [myuser @ myremoteserve
我们目前正在将jBPM(7.37.final)规则部署到一个Kie执行服务器,并使用执行服务器自动公开的REST API调用规则。 但是由于一些体系结构的限制,我们不能使用REST API调用规则。该选项是执行一个基于jar(kie服务器客户机或其他)的集成,并从客户机(java应用程序)远程调用执行服务器上的规则。 Virges Vinay
我有一个数据库结果,每一个调用创建500条记录500条,然后下一个500条,然后下一个 我需要运行一个记录每个不同线程执行特定任务的程序 我举的例子如下 ExecutorService executor=Executors.newFixedThreadPool(10); 我的问题是,在完成当前executer服务之前,it需要获得接下来的500个用户并尝试开始处理,我需要停止该操作,直到处理了前5
我使用JSCH API通过sftp连接到远程服务器。我需要将远程服务器中存在的目录从位置A移动到位置B。看起来channelsftp.put方法(src, est)只允许移动文件而不允许移动目录。 有人能告诉我怎么做吗?
我试图在unix中使用JSCHSSH类(com.jcraft.jsch)执行一些工具。我的工具有一个选择菜单。我需要转到工具所在的文件夹,执行它并选择请求的选项。在每个命令之后,(cd,execute,…)我希望检查输出并检查状态代码(0/1)。我有下面的代码按预期执行它,但在这段代码中,我找不到一种方法来检查每个命令后的输出。 我无法找到一种方法,但我怎么能分开的命令,并打印他们一个接一个(在同
我正在尝试设置一个类,以便我可以通过ssh连接到远程服务器(我有IP、用户名和密码),然后发送类似“echo”test“”的命令,然后接收回输出(例如,“test”)。我用JSch来做这个,但我不知道怎么做。 我不知道该怎么办,连接后我卡住了。 非常感谢您的建议。