Я пытаюсь подключиться к удаленной системе Linux с другой системы Linux через Telnet с помощью Java-код, как показано ниже:телнета от Явы
public static void main(String[] args) throws InterruptedException
{
// TODO Auto-generated method stub /usr/bin/telnet
try
{
String line, commandInput;
ProcessBuilder telnetProcessBuilder = new ProcessBuilder("/bin/bash");
telnetProcessBuilder.redirectErrorStream(true);
Process telnetProcess = telnetProcessBuilder.start();
BufferedReader input = new BufferedReader(new InputStreamReader(telnetProcess.getInputStream()));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(telnetProcess.getOutputStream()));
commandInput = "telnet <hostname> -l <username>\n";
output.write(commandInput);
output.flush();
commandInput = "<password>\n";
output.write(commandInput);
output.flush();
commandInput = "ls -l\n";
output.write(commandInput);
output.flush();
commandInput = "pwd\n";
output.write(commandInput);
output.flush();
commandInput = "exit\n";
output.write(commandInput);
output.flush();
commandInput = "uname -a\n";
output.write(commandInput);
output.flush();
commandInput = "exit\n";
output.write(commandInput);
output.flush();
while((line = input.readLine())!= null)
System.out.println(line);
//telnetProcess.destroy();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Я могу подключиться к удаленному компьютеру и выполнить команды перед первым выходом и он выходит из удаленной машины, когда приходит первый выход. Теперь проблема в том, что я не могу выполнять команды после первого выхода, даже если его команда выхода из/bin/bash, которая завершит выполнение процесса кодом 0. И если я уничтожу процесс после первого выхода, BufferedReader и BufferedWriter выиграют работа, которая обычно работает, если процесс завершается с кодом 0. Я не уверен, что может привести к неработоспособности команд после первого выхода. Пожалуйста, дайте мне знать ответ, если кто-нибудь уже столкнулся с ним.
Благодаря
Ashutosh
Hi Joachim, спасибо, что ответили. Как вы сказали, я немного изменил код, а вместо telnet и его пароль я просто дал нормальные команды/bin/bash, 10 обычных команд, таких как pwd, uname -a, whoami, finger, cat из почти 100 килобайт текста и выполнила команду «ls /etc/init.d -l \ n» почти в 10 раз, что довольно много в моей Linux-системе, и, наконец, команда выхода и программа работали безупречно со всем выходом, напечатанным на консольном окне, и вышли с кодом 0. Но , у меня есть эта проблема после того, о чем я спросил. В любом случае, спасибо за быстрый ответ. –
Ashutosh