Automatisierung von telnet mit Groovy
Frage
Ich mache einen gradle / OSGi zu bauen.
Ich habe die OSGi-Bundle feine Gebäude, will aber das Bündel Bereitstellung automatisieren. Ich glaube nicht, dass es eine gradle Aufgabe dafür ist, so ist dies eine groovy Frage wird. So implementieren zu einem OSGi-Container tun Sie Folgendes:
- telnet auf den OSGi-Container Port
- Senden ss Befehl die Pakete zur Liste
- analysieren, das Bündel in Frage
- uninstall das Bündel über einen "uninstall [ID]" Befehl
- Installieren Sie das Paket über einen: url „Datei installiert /// Pfad zu bündeln“
- Parse die Ergebnisse
- exit Telnet-Sitzung.
Gibt es eine Möglichkeit zu Telnet zu einem Port mit Groovy und senden Befehle und die Ausgabe lesen?
Vielen Dank für jede Hilfe, phil
Lösung
Ich weiß nicht, über Telnet, aber ich arbeitete mit Groovy und SSH die AntBuilder verwenden und die sshexec Aufgabe wie folgt:
class SshClient {
def host
def username
def password
def execute (def command) {
def ant = new AntBuilder()
ant.sshexec(host : host,
username : username,
password : password,
command : command,
trust : "true",
outputproperty : "result")
return ant.project.properties."result"
}
}
def ssh = new SshClient ( host: "myhost",
username : "myuser",
password : "secret")
println ssh.execute("ls")
Sie müssen die Ameisen jsch.jar und jsch-0.1.33.jar oder höher in Ihrem Classpath.
Andere Tipps
Dies sollte mit einer normalen Steckdose und Stream-Leser / Schreiber einfach machbar sein. Telnet ist nur ein Frontend für einfache Socket-I / O, die textbasierte Protokolle sind.
Also, um Ihre Schritte zu tun:
- Erstellen Sie eine normale Steckdose zum Ziel-Host / Port
- Write "ss"
- Erstellen Sie eine Input
- Verbrauchen alles verfügbar
- Parse Ihre Bündel-ID finden
- Senden "uninstall" + bund
- Verbrauchen des Stroms, bis Eingabeaufforderung eintrifft / Deinstallation beendet
- Senden "install file: // path /"
- Verbrauchen des Stroms, bis Eingabeaufforderung eintrifft / Installation beendet
- socket.close ()
Ja, ich weiß, das erinnert an die Schritte, die Sie bereits geschrieben, aber da telnet kein wirkliches Protokoll ist, sondern nur ein Frontend für Text Steckdosen, sollten diese für sich selbst leicht machbar sein.