все значения внутри функции являются локальными для этой функции ... если я не использую return
blockquote>Что ж, это ... частично верно. Первая часть верна, и нет «если». Оператор
return
просто указывает на значение, которое, в общем-то, возвращает функция. Это не значит, что эта переменная теперь глобальная. Значение вreturn
является своего рода «значением функции», и вы должны сохранить его в переменной, если хотите использовать его позже, как вы можете видеть в ответах других.
Вы можете взглянуть на эту среду на основе Java для удаленного выполнения команд, в т.ч. через SSH: https://github.com/jkovacic/remote-exec Он опирается на две библиотеки SSH с открытым исходным кодом, либо JSch (для этой реализации поддерживается даже аутентификация ECDSA), либо Ganymed (один из этих двух библиотек будет достаточно). На первый взгляд это может показаться немного сложным, вам придется подготовить множество классов, связанных с SSH (предоставление сведений о сервере и ваших пользователях, указание деталей шифрования, предоставление закрытых ключей, совместимых с OpenSSH и т. Д., Но сам SSH довольно сложен). тоже). С другой стороны, модульная конструкция позволяет легко включать больше библиотек SSH, легко реализовывать обработку вывода другой команды или даже интерактивные классы и т. Д.
Несколько лет назад я использовал для этого ганимед ... http://www.cleondris.ch/opensource/ssh2/
Взгляните на Runtime.exec () Javadoc
Process p = Runtime.getRuntime().exec("ssh myhost");
PrintStream out = new PrintStream(p.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
out.println("ls -l /home/me");
while (in.ready()) {
String s = in.readLine();
System.out.println(s);
}
out.println("exit");
p.waitFor();