2011-06-01 77 views
5

我目前在Java中使用SSH库,但它似乎缺乏执行多部分命令的能力(例如,如果我做passwd user我没有办法然后输入密码两次以更改它,因为它使您每次输入命令时开始一个新的会话)。我真的需要这个功能,用于当前我正在开发的应用程序,似乎有很多适用于Java的SSH库,但我不确定哪些应用程序允许这样做,因为有些看起来不像。用于交互式SSH会话的Java库(能够执行多部分命令)?

任何建议在一个好的图书馆看这个将不胜感激。

要密切巡视:如果你要试图关闭这一点,至少举,询问同样的问题我的,不只是一般的线程“什么一个好的Java SSH文库”问题

+0

[对Java SSH库]的可能重复(http://stackoverflow.com/questions/995944/ssh-library-for-java) – 2011-06-01 01:36:25

+2

感谢试图援引一个关闭我的线程是不同样的,但请阅读你引用的线程,你会看到它没有指定相同的参数,我知道那个线程,它没有t问我的具体问题 – Rick 2011-06-01 02:14:13

回答

2

我使用Ganymede SSH-2库取得了巨大成功。但是密码提示不应该出现在应用程序中,它应该是连接建立协商的一部分。

+0

谢谢我会看看Ganymede(Ganymed?),但我认为你误读了我所说的,这是一个示例命令,我尝试使用'passwd user'来更改用户的密码,而不是输入密码连接 – Rick 2011-06-01 00:59:10

+1

为ref:http://www.cleondris.ch/opensource/ssh2/,因为我找到项目的主页有点麻烦 – Rick 2011-06-01 01:04:44

+0

@Rick好吧,我明白了。祝你好运。 – EJP 2011-06-01 01:07:48

0

你可以运行像“passwd中用户”交互式命令使用

session.getStdin().write() refer following snipped 
connection = new Connection(host,port); 
      connection.connect(); 
      // Authenticate 
    boolean result = connection.authenticateWithPassword(username, password); 
Session session = connection.openSession(); 
session.requestPTY("bash"); 
session.execCommand("passwd testuser"); 
session.getStdin().write("newPassword\n".getBytes()); // //for new password 
session.getStdin().write("newPassword\n".getBytes()); //for retype new password 

System.out.println("ExitCode: " + session.getExitStatus()); 
session.close(); 
connection.close();