Preface
延續 前一篇的介紹, 如果你需要與 Linux Shell 的命令互動, 如 passwd, scp etc, 那可以參考下面的使用範例. 在 JExpect 中整合了 JSch 套件 來完成與 Linux Shell 的互動.
SSH Login Remote Server
考慮如果你要使用 ssh 連到遠端終端機, 可以使用 JExpect 上的 API:
一個連接的範例代碼如下:
如果成功登入並取得
ISpawnProcess 實作的物件, 此時你便可以繼續與終端 terminal 互動, 譬如你要 透過命令 "netstat -tunlp" 檢視遠端連線狀態, 則可以透過 API:sendLine() 來執行命令, 範例代碼如下:
接著你可以使用
API:readLines(timeout) 取回 Stdout 的輸出, 參考下面範例代碼:
部分執行結果如下:
或是你可以使用 API:interact() 並使用鍵盤與終端互動:
執行結果:
最後要結束程式前, 記得執行下面代碼關閉與遠端連線:
Supplement
* Linux Change Password
* JSch - Java Secure Channel
延續 前一篇的介紹, 如果你需要與 Linux Shell 的命令互動, 如 passwd, scp etc, 那可以參考下面的使用範例. 在 JExpect 中整合了 JSch 套件 來完成與 Linux Shell 的互動.
SSH Login Remote Server
考慮如果你要使用 ssh 連到遠端終端機, 可以使用 JExpect 上的 API:
- /**
- * SSH to connect remote machine.
- *
- * @param host: Hostname of remote machine.
- * @param user: User name to login.
- * @param password: Password to Login
- * @return
- * Object which implemented ISpawnProcess interface.
- * @throws Exception
- */
- public static ISpawnProcess SpawnShell(String host, String user, String password) throws Exception
- def host = 'localhost'
- def user = 'john'
- def pwd = 'john7810'
- ISpawnProcess sp = JExpect.SpawnShell(host, user, pwd)
- sp.sendLine('netstat -tunlp')
- sp.readLines(2000).each{ line->
- printf("Stdout> ${line}\n")
- }
- println()
或是你可以使用 API:interact() 並使用鍵盤與終端互動:
- sp.interact()
最後要結束程式前, 記得執行下面代碼關閉與遠端連線:
- sp.close()
Supplement
* Linux Change Password
* JSch - Java Secure Channel
This message was edited 20 times. Last update was at 12/02/2015 12:30:07
沒有留言:
張貼留言