2013-04-23 14 views
13

Ich weiß nicht, ob es eine Scala oder Play ist! Frage. Ich möchte einen externen Befehl von meiner Play-Anwendung ausführen, die Ausgabe des Befehls abrufen und dem Benutzer basierend auf der Befehlsausgabe einen Bericht anzeigen. Kann jemand helfen?Externen Befehl ausführen

Zum Beispiel, wenn ich my-Befehl von Shell eingeben zeigt es eine Ausgabe wie unten, die ich aufnehmen möchten und zeigen in web:

Id Name IP 
==================== 
1  A  x.y.z.a 
2  B  p.q.r.s 

Bitte, keine Sorge über Format und Parsen die Ausgabe. Funktionell sehe ich etwas wie PHP exec. Ich weiß über Java Runtime.getRuntime(). Exec ("Befehl") aber gibt es irgendwelche Scala/Play-Version, um den Zweck zu dienen?

Antwort

35

Sie müssen zuerst die Prozesspakete von scala importieren. Die Methode !! tut was Sie brauchen, es führt die Anweisung aus und erfasst die Textausgabe.

import scala.sys.process._ 
val cmd = "uname -a" // Your command 
val output = cmd.!! // Captures the output 
+4

[Handlicher Dokumentationslink] (http://www.scala-lang.org/api/2.10.4/#scala.sys.process.package) – BeepDog

7
scala> import scala.sys.process._ 
scala> Process("cat temp.txt")! 

Dies setzt voraus, dass es eine temporäre Datei in Ihrem Home-Verzeichnis gibt. ! ist für die tatsächliche Ausführung des Befehls. Weitere Informationen finden Sie unter scala.sys.process.

+0

Vielen Dank, ich habe nicht über Prozessklasse. –

Verwandte Themen