我是这类Java应用程序的新手,正在寻找一些示例代码,介绍如何使用SSH连接到远程服务器,执行命令,并使用Java作为编程语言获取输出.
我想用Java创建一个SSH隧道.我在另一篇文章中发现了不少Java SSH库.在深入研究每个选项之前,也许有人可以给我一些他们如何做到的代码片段,或者至少告诉我哪个客户端库最有效.
我只需要隧道.我不需要文件传输,终端仿真等等.是否有一些简单的代码行可以转发服务器上的端口以在我的客户端的localhost适配器上工作?理想情况下,客户端和服务器都是Java,但我现在只会满足于客户端.
我目前正在Java中使用SSH库,但它似乎缺乏执行多部分命令的能力(例如,如果我passwd user没有办法输入密码两次以将其更改为,因为它会让你开始新的每次输入命令时的会话).我真的需要这个功能用于我正在使用的当前应用程序,并且似乎有很多用于Java的SSH库,但我不确定哪些会允许这样,因为有些人似乎没有.
任何关于一个好的图书馆的建议都会非常感激.
对于近距离巡逻:如果你要尝试关闭它,至少引用一个线程,询问与我相同的问题,而不仅仅是一般的"什么是一个好的Java ssh库"问题
哪些是用于在java中实现自定义SSH客户端和服务器的流行库?
我知道Jsch(http://www.jcraft.com/jsch/)是一个流行的java ssh客户端,有没有开源许可证的优秀且安全的java ssh服务器?
我正在Java程序中实现任务的工作流程.其中一项任务是在多台Linux服务器上运行一些命令.
动态确定服务器 - 从XML文件读取.我检查了Rundeck的API,但似乎我必须提前配置服务器,这不符合我的需要.
有任何想法吗?
我想知道是否有一种简单的方法可以将其作为java程序的一部分.
我希望能够ssh到另一台机器并在该机器上执行命令.
一个简单的例子是:runtime.exec("说你好世界"); 将(在Mac上)有一个文本到语音引擎说你好世界.
有没有办法让java在另一台机器上运行此方法?
另外,假设以上是可能的,有没有办法同时ssh到多台机器?
谢谢
可能重复:
如何向putty发送命令
如何使用java向putty发送命令?我必须使用Putty.我的意思是向putty窗口发送命令,例如Java应该将"ls -l"发送到putty窗口.
任何人都可以显示moe如何从java ssh命令发送(例如ssh root@192.168.0.2"ls")?我需要什么课?
我正在寻找一种方法来读取远程unix主机上快速增长的日志文件.
日志文件偶尔会获得一个logswitch(例如,再次从0字节开始).我无法直接在远程主机上处理日志文件的原因是处理器对主机施加了太多负载,这是不可能发生的.所以我需要在两个不同的主机上进行处理和读取.
由于我不在Java世界的家中,我想询问有关如何最好地实现这一目标的建议.
我的想法到目前为止:
让本地日志文件处理器(localhost)scp一个logfilereader(java二进制文件)到远程主机并启动它(通过本地日志文件处理器启动的ssh连接).然后,logfilereader开始读取/拖尾日志文件并将其作为TCP流提供(然后可以由本地日志文件处理器读取).
我很确定有更优雅的javastyle方法.谢谢你的任何提示.
下面是我正在运行的代码片段.我是否使用数组pf字符串(cmd)或它是单个字符串我得到一个例外(见下文),同时有一个无密码登录到目标Linux系统.
private static int bringHostFile() {
try {
String[] cmd ={"ssh" , "root@im6-64s" , "/root/bring_hosts"};
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
String s = null;
// read the output from the command
if ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// read any errors from the attempted command
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
}
catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
例外: …