2012-04-27 122 views
0

我正在編寫一個程序,我需要遠程登錄到遠程機器,訪問文件並對其進行編輯。 我可以做telnet部分。 這使我可以訪問該系統的OutputStream和InputStream。我可以發送命令並使用vi編輯器打開文件。我也能夠讀取文件的內容在java中使用vi編輯器編輯文件

DataInputStream data = new DataInputStream(telnet.getInputStream()); 
data.readLine(). 

但我無法寫入此文件或編輯它。 有什麼建議嗎?

+2

而不是使用vi,你可以用'sed'腳本表達你需要做什麼嗎?這將消除在屏幕周圍導航的需要。 – 2012-04-27 21:20:13

+0

遠程機器上的用戶是否有權寫入文件? – 2012-04-27 21:20:22

+0

你使用哪種API進行遠程登錄?我懷疑你不能使用'vi',因爲它是一個** visual **命令並且與設備鍵盤交互,而不是'stdin' /'stdout'。如何提供修改? – 2012-04-27 21:21:35

回答

1

我懷疑你正在運行在遠程系統上的行編輯問題。我認爲使用sed(如@Jim Garrison提到的)或使用基於行的編輯器ed可以取代基於鍵的編輯器,如vi或emacs。

下面是如何使用ed編輯名爲「file」的文件的簡單示例。 man ed應顯示各種功能。

> ed file 
file: No such file or directory 
i 
hello there 
. 
1 
hello there 
a 
and now append a line 
. 
1,$n 
1  hello there 
2  and now append a line 
w 
34 
q 

> cat file 
hello there 
and now append a line