Hallo,
per JSch verbindet sich mein Java-Programm über SSH und soll dann Befehle absetzen. Dazu erwartet JSch einen InputStream.
Mit System.in klappt das auch wunderbar, allerdings soll mein Programm die Befehle automatisch absetzen, also <Befehl1> <warten> <Befehl2> usw.
Ist soetwas mit Java möglich? also dass ich sozusagen Tastatureingaben simuliere?
Meine Idee war folgende:
Leider wird nur der erste Befehl ls -al korrekt angezeigt + ausgeführt. Muss ich dem InputStream irgendwie sagen, dass sich seine Quelle geändert hat? Schreibt denn ein Stream nicht immer alles fortlaufend weg?
Vielen Dank im Voraus! Viele Grüße.
per JSch verbindet sich mein Java-Programm über SSH und soll dann Befehle absetzen. Dazu erwartet JSch einen InputStream.
Mit System.in klappt das auch wunderbar, allerdings soll mein Programm die Befehle automatisch absetzen, also <Befehl1> <warten> <Befehl2> usw.
Ist soetwas mit Java möglich? also dass ich sozusagen Tastatureingaben simuliere?
Meine Idee war folgende:
Code:
String str = "ls -al \n";
InputStream bais = new ByteArrayInputStream(str.getBytes());
channel.setInputStream(bais);
channel.setOutputStream(System.out);
threadInput = new Thread() {
public void run() {
while (!channel.isEOF()) {
if (threadInput == null) {
return;
}
try {
sleep(1000);
// Nach 1s soll der neue String rausgeschrieben werden
str = "hallo";
} catch (Exception e) {
// ignored
}
}
}
};
Leider wird nur der erste Befehl ls -al korrekt angezeigt + ausgeführt. Muss ich dem InputStream irgendwie sagen, dass sich seine Quelle geändert hat? Schreibt denn ein Stream nicht immer alles fortlaufend weg?
Vielen Dank im Voraus! Viele Grüße.