Ich möchte eine JavaScript-Funktion schreiben, die ( ls
zum Beispiel) die System-Shell-Befehle ausführt und den Wert zurückgibt.
Wie erreiche ich das?
javascript
Sunil Kumar Sahoo
quelle
quelle
Antworten:
Viele der anderen Antworten hier scheinen dieses Problem aus der Perspektive einer JavaScript-Funktion zu lösen, die im Browser ausgeführt wird. Ich werde schießen und antworten, vorausgesetzt, als der Fragesteller "Shell Script" sagte, meinte er ein Node.js Backend JavaScript. Verwenden Sie möglicherweise Commander.js , um Ihren Code zu rahmen :)
Sie können das Modul child_process über die API des Knotens verwenden. Ich habe den folgenden Beispielcode eingefügt.
Hoffe das hilft!
quelle
... einige Jahre später ...
ES6 wurde als Standard akzeptiert und ES7 steht vor der Tür, daher verdient es eine aktualisierte Antwort. Wir werden ES6 + async / await mit nodejs + babel als Beispiel verwenden. Voraussetzungen sind:
Ihre Beispieldatei
foo.js
könnte folgendermaßen aussehen:Stellen Sie sicher, dass Sie babel haben:
Installieren Sie die neueste Voreinstellung:
Führen Sie es aus über:
quelle
Ich weiß nicht, warum die vorherigen Antworten alle möglichen komplizierten Lösungen lieferten. Wenn Sie nur einen schnellen Befehl wie ausführen möchten,
ls
benötigen Sie weder Async / Warten noch Rückrufe oder ähnliches . Hier ist alles was Sie brauchen - execSync :Fügen Sie zur Fehlerbehandlung einen
try
/catch
-Block um die Anweisung hinzu.Wenn Sie einen Befehl ausführen, dessen Ausführung lange dauert, sehen Sie sich die asynchrone
exec
Funktion an.quelle
Dies hängt vollständig von der JavaScript-Umgebung ab. Bitte erläutern Sie.
In Windows Scripting führen Sie beispielsweise folgende Aktionen aus:
quelle
In einer Nussschale:
quelle
Mit NodeJS ist das ganz einfach! Und wenn Sie dieses Skript bei jedem Start Ihres Servers ausführen möchten, können Sie sich die Forever-Service- Anwendung ansehen !
quelle
Hinweis: Diese Antworten stammen von einem browserbasierten Client an einen Unix-basierten Webserver.
Führen Sie den Befehl auf dem Client aus
Sie können im Wesentlichen nicht. Laut Sicherheit wird nur in einem Browser ausgeführt und der Zugriff auf Befehle und Dateisystem ist eingeschränkt.
Führen Sie ls auf dem Server aus
Sie können einen AJAX-Aufruf verwenden, um eine dynamische Seite abzurufen, die Ihre Parameter über ein GET übergibt.
Beachten Sie, dass dies auch ein Sicherheitsrisiko darstellt, da Sie etwas tun müssten, um sicherzustellen, dass Frau Rouge Hacker Ihre Anwendung nicht zum Ausführen bringt: / dev / null && rm -rf / ......
Kurz gesagt, es ist nur eine schlechte, schlechte Idee, vor JS davonzulaufen ... YMMV
quelle
Ein weiterer Beitrag zu diesem Thema mit einer netten jQuery / Ajax / PHP-Lösung:
Shell-Scripting und jQuery
quelle
Im IE können Sie dies tun:
quelle
Hier ist ein einfacher Befehl, der den
ifconfig
Shell-Befehl von Linux ausführtquelle
Diese Funktion kann einfach verwendet werden wie:
quelle
Mit nashorn können Sie ein Skript wie folgt schreiben:
und führen Sie es aus:
quelle
Wenn Sie npm verwenden, können Sie das Paket shelljs verwenden
Installieren:
npm install [-g] shelljs
Weitere Informationen: https://www.npmjs.com/package/shelljs
quelle