Я создаю простую программу, которая выполняет одну команду на Linux-сервере, используя Ganymed для библиотеки SSH2. Вот мой код ...System.out.println печать в то же время
public class Main {
static Scanner reader = new Scanner(System.in);
public static void main(String[] args) throws IOException, InterruptedException{
String hostname; // = "192.168.1.241";
int port; // = 22
String username; // = "root";
String password;
String cmd; // = "echo 'Hello World'";
//ask user for hostname/IP
System.out.print("Enter hostname or IP: ");
hostname = reader.nextLine();
//ask user for port #
System.out.print("Enter port number: ");
port = reader.nextInt();
//create connection
Connection connect = new Connection(hostname, port);
//ask user for username
System.out.println("Enter Username (best to use 'root'): ");
username = reader.nextLine();
//ask user for password
System.out.println("Enter Password: ");
password = reader.nextLine();
System.out.println("Attempting to log in...");
reader.close();
//establish connection
connect.connect();
//login using password
connect.authenticateWithPassword(username, password);
Thread.sleep(1000);
if (Thread.interrupted()) // Clears interrupted status!
throw new InterruptedException();
Boolean didConnect = connect.isAuthenticationComplete();
if (didConnect==false){
throw new IOException("Authentication Unsucessful \nCheck hostname and port number, then try again.");
}
//open session
Session session = connect.openSession();
System.out.println("Opened session!");
System.out.println("Enter a command to execute: ");
cmd = reader.nextLine();
//execute command
session.execCommand(cmd);
//get output
InputStream stdout = new StreamGobbler(session.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
String line = br.readLine();
if (line!=null){
System.out.println("Command sent succesfully!" + "\nOutput: " + "\n" + "\n" + line);
}else{
System.out.println("Command sent succesfully!" + "\nNo Output");
}
//close buffered reader
br.close();
//close session
session.close();
//close connection
connect.close();
}
}
По какой-то причине ...
//ask user for username
System.out.println("Enter Username (best to use 'root'): ");
username = reader.nextLine();
//ask user for password
System.out.println("Enter Password: ");
password = reader.nextLine();
печати в то же время, и я не знаю почему! Он также вводит пользовательский ввод на совершенно другой строке вместо правого рядом с ним при использовании печати ln и в той же строке при использовании print.
Я хочу, чтобы они сначала попросили имя пользователя, а затем пароль, поместив ввод пользователя рядом с выходом. Однако, когда я запрашиваю имя хоста и номер порта, они печатаются индивидуально/в порядке, как я этого хочу. Что я делаю не так?
спасибо, это сработало, приятное объяснение –