Saya ingin menulis fungsi JavaScript yang akan menjalankan perintah shell sistem ( ls
misalnya) dan mengembalikan nilainya.
Bagaimana saya mencapai ini?
javascript
Sunil Kumar Sahoo
sumber
sumber
Jawaban:
Banyak dari jawaban lain di sini tampaknya mengatasi masalah ini dari perspektif fungsi JavaScript yang berjalan di browser. Saya akan menembak dan menjawab dengan asumsi bahwa ketika penanya mengatakan "Shell Script" yang dia maksud adalah JavaScript backend Node.js. Mungkin menggunakan commander.js untuk menggunakan bingkai kode Anda :)
Anda dapat menggunakan modul child_process dari node API. Saya menempelkan kode contoh di bawah ini.
Semoga ini membantu!
sumber
... beberapa tahun kemudian ...
ES6 telah diterima sebagai standar dan ES7 sudah dekat sehingga layak mendapatkan jawaban yang diperbarui. Kami akan menggunakan ES6 + async / await dengan nodejs + babel sebagai contoh, prasyaratnya adalah:
foo.js
File contoh Anda mungkin terlihat seperti ini:Pastikan Anda memiliki babel:
Instal preset terbaru:
Jalankan melalui:
sumber
Saya tidak tahu mengapa jawaban sebelumnya memberikan segala macam solusi yang rumit. Jika Anda hanya ingin menjalankan perintah cepat seperti
ls
, Anda tidak perlu async / await atau callback atau apa pun. Ini semua yang Anda butuhkan - execSync :Untuk penanganan kesalahan, tambahkan
try
/catch
blok di sekitar pernyataan.Jika Anda menjalankan perintah yang membutuhkan waktu lama untuk menyelesaikannya, ya, lihat fungsi asynchronous
exec
.sumber
Ini sepenuhnya bergantung pada lingkungan JavaScript. Tolong jelaskan.
Misalnya, di Windows Scripting, Anda melakukan hal-hal seperti:
sumber
Pendeknya:
sumber
Dengan NodeJS sesederhana itu! Dan jika Anda ingin menjalankan skrip ini di setiap boot server Anda, Anda dapat melihat aplikasi layanan selamanya !
sumber
Catatan: Jawaban ini berasal dari klien berbasis browser ke server web berbasis Unix.
Jalankan perintah pada klien
Anda pada dasarnya tidak bisa. Keamanan mengatakan hanya berjalan di dalam browser dan aksesnya ke perintah dan sistem file dibatasi.
Jalankan ls di server
Anda dapat menggunakan panggilan AJAX untuk mengambil halaman dinamis yang meneruskan parameter Anda melalui GET.
Ketahuilah bahwa ini juga membuka risiko keamanan karena Anda harus melakukan sesuatu untuk memastikan bahwa mrs rouge hacker tidak membuat aplikasi Anda mengatakan run: / dev / null && rm -rf / ......
Singkatnya, menjalankan dari JS hanyalah ide yang buruk dan buruk .... YMMV
sumber
Posting lain tentang topik ini dengan solusi jQuery / Ajax / PHP yang bagus:
shell scripting dan jQuery
sumber
Di IE, Anda dapat melakukan ini:
sumber
Berikut adalah perintah sederhana yang menjalankan
ifconfig
perintah shell Linuxsumber
Fungsi ini dapat digunakan dengan mudah seperti:
sumber
Dengan nashorn Anda dapat menulis skrip seperti ini:
dan jalankan:
sumber
Jika Anda menggunakan npm, Anda dapat menggunakan paket shelljs
Untuk memasang:
npm install [-g] shelljs
Lihat lebih lanjut: https://www.npmjs.com/package/shelljs
sumber