Tôi có hai máy chủ Linux bảo mật. Trong một máy, ứng dụng Java của tôi đang chạy. Tôi cần chạy các lệnh Linux trên máy thứ hai từ máy đầu tiên trong Java. Làm thế nào tôi có thể làm điều này?Làm cách nào để thực thi các lệnh Linux trên máy từ xa bằng Java?
Trả lời
Về cơ bản, bạn cần phải mở kết nối ssh với máy chủ khác từ bên trong ứng dụng Java của bạn. Trang web OpenSSH có một số thông tin hữu ích về các thư viện sẽ cung cấp cho bạn hỗ trợ ssh trong Java.
Có vẻ như Ganymed SSH-2 for Java là lựa chọn tốt nhất ở đó, nhưng tôi chưa sử dụng bất kỳ thứ gì trong số đó, vì vậy bạn sẽ cần xem xét những gì bạn cần.
Khi bạn có kết nối ssh, bạn sẽ có thể chạy các lệnh giống như khi bạn đăng nhập bằng bất kỳ ứng dụng khách ssh nào khác.
liên kết OpenSSH của bạn không hoạt động –
Có thể dễ dàng kiểm tra Ổ cắm hơn, vì bạn có thể làm những gì bạn đang cố gắng làm mà không phải thiết lập bất kỳ thư viện bên ngoài nào.
Trên máy chủ, bạn muốn thiết lập đối tượng ServerSocket và từ máy khách, bạn mở một Ổ cắm. Tôi không có thời gian để viết một ví dụ hoàn chỉnh, nhưng hãy kiểm tra điều này một cách đơn giản để thiết lập kết nối máy chủ lưu trữ trên Internet trong Java.
http://zerioh.tripod.com/ressources/sockets.html
Khi bạn nhận được rằng thiết lập, bạn muốn nhập lệnh shell của bạn từ ServerSocket trên máy tính mà nên thực hiện lệnh, và làm điều gì đó xung quanh dòng
String command = "get this from the ObjectInputStream attached to your ServerSocket";
Runtime run = Runtime.getRuntime();
Process pr = run.exec(command) ;
pr.waitFor() ;
BufferedReader buffer = new BufferedReader(new InputStreamReader(pr.getInputStream())) ;
String line;
while ((line = buffer.readLine()) != null)
{
System.out.println(line);
}
Các một phần khó khăn là thiết lập một kết nối máy khách-máy chủ có thể thực hiện được với các Ổ cắm, nhưng nếu bạn đang làm một cái gì đó đơn giản, bạn sẽ ổn với ví dụ từ liên kết ở trên.
Bạn thực sự muốn phát minh lại bánh xe và làm lại mọi thứ để bảo đảm kết nối khi bạn có thể sử dụng ssh? – lc2817
Tôi đã đọc sai câu hỏi dưới dạng yêu cầu thực hiện Java. Cảm ơn đã chỉ ra điều đó. –
Bạn có thể thực hiện theo một số cách; tuy nhiên, gần như mọi cách liên quan đến kết nối mạng.
Bạn có thể viết cặp chương trình Java máy khách-máy chủ, với kết nối máy khách đến máy chủ và gửi lệnh.
Bạn có thể viết Java để sử dụng máy chủ hiện có, như sshd, telnetd, rsh, ftpd hoặc máy chủ khác đã tồn tại từ trước cho phép các lệnh ở đầu từ xa.
Bạn có thể tận dụng một kiến trúc mà xử lý một số khía cạnh của việc thiết lập một cặp client-server, như RMI, SOAP, CORBA vv
Trong cuối Java hỗ trợ nhiều lựa chọn kết nối mạng, vì vậy bạn có nhiều cách làm điều này hơn bạn nghĩ. Chỉ cần chắc chắn rằng bạn không làm điều đó trong một trình duyệt web, như những JVM được tung ra sandboxed, và bạn không thể có được ra khỏi sandbox mà không cần một số trợ giúp.
Jsch (here) cho phép bạn kết nối với máy chủ từ xa bằng SSH và thực thi lệnh shell dễ dàng (và nhiều thứ khác như SCP, SFTP ...). Không có nhiều tài liệu, nhưng bạn có một vài ví dụ triển khai thực sự hữu ích here (và thậm chí là ví dụ về những gì bạn muốn làm here).
Bạn cũng có thể kết hợp Jsch với Expect4j và cách này có kiểm soát tốt hơn trên các lệnh bạn muốn thực thi (ví dụ đẹp here).
+1 cho câu trả lời hoàn hảo .... Cảm ơn rất nhiều –
- 1. Làm thế nào để thực thi lệnh dos trên máy tính từ xa?
- 2. Thực thi tập lệnh cục bộ trên máy chủ Linux từ xa
- 3. Thực thi các lệnh DB2 từ dòng lệnh đến máy chủ từ xa
- 4. Làm cách nào để thực thi quy trình trên máy từ xa, trong C#
- 5. Powershell Thực thi exe từ xa với các đối số dòng lệnh trên máy tính từ xa
- 6. Làm cách nào để thực thi từ xa một tập lệnh trong Windows?
- 7. Thực thi tập lệnh python từ xa qua SSH
- 8. Làm thế nào để từ xa thực thi một kịch bản từ xa cao trong PowerShell
- 9. Làm cách nào để thực thi các lệnh Bash và thu thập kết quả từ Java?
- 10. Các lệnh Linux từ Java
- 11. Làm cách nào để thực thi các lệnh bên ngoài trong C++/Linux?
- 12. Execute lệnh trên máy tính từ xa thông qua PHP
- 13. Thực hiện lệnh Shell trên MySql trên máy chủ từ xa
- 14. Cách khác để phát hành nhiều lệnh trên máy từ xa bằng SSH?
- 15. Làm cách nào để thực thi lệnh mỗi lần sau khi ssh'ing từ máy này sang máy khác?
- 16. Làm cách nào để thực thi một tập lệnh PHP từ Java?
- 17. Làm thế nào để thực thi một kịch bản lệnh shell từ C trong Linux?
- 18. Làm cách nào để thực thi các tệp mẫu ruby (ERB) mà không có máy chủ web từ dòng lệnh?
- 19. Làm cách nào để thực hiện các lệnh từ xa trong PHP qua ssh?
- 20. Thực thi các lệnh bằng notepad ++
- 21. Làm thế nào để thực hiện một kịch bản PowerShell có sẵn trong máy từ xa?
- 22. Làm thế nào để thực thi tệp sql từ java
- 23. Làm thế nào để lặp lại một lệnh thực thi trong terminal trong Linux?
- 24. Làm thế nào để thực hiện các lệnh hệ thống (linux/bsd) bằng cách sử dụng Java
- 25. Làm cách nào để tạo chương trình Java thực thi?
- 26. Làm cách nào để có thể sử dụng các dịch vụ web từ xa từ tập lệnh phía máy khách?
- 27. Tránh xuất khẩu các ký hiệu từ các tập tin thực thi trên Linux
- 28. Làm cách nào để phát triển từ xa với Emacs?
- 29. Làm cách nào để tìm kiếm tệp thực thi bằng python trong linux?
- 30. Java thực thi chương trình dòng lệnh
Ổ cắm là điều đầu tiên xuất hiện trong đầu bạn. http://download.oracle.com/javase/tutorial/networking/sockets/ – Adam