Я пытаюсь создать небольшую программу на Java, которая позволит мне получить доступ к удаленному Unix серверу, выполнить некоторые команды и затем отобразить вывод этих команд в среде IDE.
Я собирал фрагменты кода и пытался понять, как это работает, когда я go вместе, что, вероятно, не идеально!
В настоящее время я могу запускать команды с консоли и Я могу видеть результаты на сервере, но мне не удалось отправить результат обратно на консоль. Всякий раз, когда я пытаюсь отправить их в виде строки, я получаю что-то вроде java .lang. UNIXProcess$ProcessPipeInputStream@9x57d1ad вместо обычного вывода, который я вижу на сервере. Я уверен, что есть что-то очевидное, что я делаю неправильно, но я новичок и, несмотря на то, что потратил часы на поиски, мне пока не удалось найти решение. Буду очень признателен за помощь. Спасибо!
ЗАПУСК НА СЕРВЕРЕ:
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(portNumber);
Socket clientSocket = serverSocket.accept();
PrintWriter out =
new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
if (inputLine.equals("storage")) {
runStorage();
printResults(runStorage()); }
catch (Exception e) {
e.printStackTrace();
}
public static Process runStorage() throws IOException {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("df", "-h");
Process process = processBuilder.start();
printResults(process);
return process;
}
public static String printResults(Process process) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
return line; }
КЛИЕНТ:
public class ClientInitiator {
public static void main(String[] args) throws IOException, InterruptedException {
String hostName = "myHostNameGoesHere";
Socket echoSocket = new Socket(hostName, portNumber);
PrintWriter out =
new PrintWriter(echoSocket.getOutputStream(), true);
BufferedReader in =
new BufferedReader(
new InputStreamReader(echoSocket.getInputStream()));
BufferedReader stdIn =
new BufferedReader(
new InputStreamReader(System.in));
{
String userInput;
while (!(userInput = stdIn.readLine()).equals("")) {
out.println(userInput);
if (userInput.equals("storage")) {
String serverResponse = in.readLine();
System.out.println(serverResponse);}