Saya ingin meluncurkan skrip bash ketika tombol ditekan di situs web. Ini adalah upaya pertama saya:
<button type="button" onclick="/path/to/name.sh">Click Me!</button>
Tapi tidak berhasil. Ada saran?
EDIT- Mengikuti saran slhclk dan mit:
Saya memiliki file php di / var / www yang saya arahkan ke browser-web saya. Isi file adalah sebagai berikut:
<?php
exec("/home/aa/scripts/test.sh");
?>
tesh.sh berisi ini:
screen -S server1 -X quit
Jika saya mengetikkan /home/aa/scripts/test.sh
shell, skrip dapat dijalankan. Namun, ketika saya mengarahkan browser web saya ke http://example.com/screen.php (yang memiliki kode di atas), saya melihat halaman kosong dan skrip belum dieksekusi. Keduanya memiliki izin eksekusi. Mengapa itu tidak berhasil?
Jawaban:
Apa yang Anda coba lakukan tidak mungkin seperti itu.
Perhatikan bahwa selalu ada dua sisi untuk itu: Sisi klien dan sisi server. Apakah skrip di komputer klien atau di server?
Jika ada di klien: Anda sebagai pengunjung hanya melihat situs web HTML.
onClick
hanya akan dapat meluncurkan JavaScript (atau bahasa skrip lain ), tetapi tidak ada skrip shell sembarang yang berada di komputer Anda. Script HTML hanya berjalan di browser dan hanya dapat melakukan hal-hal terbatas. Yang paling penting, mereka tidak dapat berinteraksi dengan komputer Anda.Pikirkan tentang hal ini: Bagaimana browser tahu cara membuka file? Tidakkah Anda pikir ini akan menjadi masalah keamanan juga - sebuah situs web sederhana yang memicu eksekusi skrip pada komputer klien? Bagaimana jika ada sesuatu seperti itu
onClick('rm -rf /home/user')
?Alternatifnya adalah menjalankan applet Java, jika Anda ingin kode dieksekusi pada klien, tetapi ini tidak persis sama dan itu adalah sesuatu yang sangat rumit. Saya pikir tidak perlu menjelaskan ini secara rinci.
Jika skrip ada di server: Jika Anda ingin menjalankan skrip di sisi server dan meminta pengguna memicu pelaksanaannya, maka Anda perlu menggunakan bahasa pemrograman sisi server. Hanya HTML tidak akan melakukannya, karena ini lebih atau kurang file statis. Jika Anda ingin berinteraksi dengan server, Anda bisa menggunakan PHP misalnya .
Ini memiliki
exec
fungsi untuk menjalankan skrip baris perintah yang disimpan di server web. Jadi pada dasarnya, Anda bisa menulisexec('/path/to/name.sh');
dan menjalankan skrip di server.Namun, memasukkan saja ini
onClick
tidak cukup di sini. Jika Anda belum tahu tentang PHP dan pemrograman web sisi server, Anda mungkin ingin membaca beberapa tutorial terlebih dahulu dan kemudian kembali dengan pertanyaan yang lebih spesifik.Jika Anda memiliki file php dengan
exec(...)
perintah yang sesuai , pastikan skrip telah mengeksekusi izin yang ditetapkan tidak hanya untuk pengguna tetapi juga untuk grup server web, jadi dalam kasus yang paling sederhana saja777
.Jika terjadi masalah, periksa kembali nilai skrip dengan
echo exec(...);
untuk melihat apakah ada kesalahan.Anda juga dapat menjalankan skrip dari baris perintah dan bukan dari browser dengan
php /path/to/file.php
.sumber
exec
baris dengan menulisecho exec(...);
. Perhatikan juga bahwa skrip perlu menjalankan izin untuk grup yang dijalankan oleh server web Anda, bukan hanya pengguna Anda.php -v
dan fakta bahwa saya memiliki phpfilemanager bagi orang untuk mengedit file. Kenapa tidak menggunakan penerjemah php?php /var/www/trash/run.php
dan bukan hanya nama file PHP itu sendiri.Anda memerlukan intelijen sisi server untuk ini. HTML saja tidak cukup, karena statis. Salah satu cara yang umum adalah php. Banyak penawaran yang diinangi memang memasang php secara default.
Anda dapat menggunakan program ftp untuk meletakkan file teks ke direktori root server Anda.
Filefile bisa dinamai "run.php" dengan konten berikut:
Katakanlah domain Anda adalah "example.com", jika Anda mengunjungi halaman ini di browser Anda:
http://example.com/run.php
maka file php akan dieksekusi di server. Ini akan mengirim halaman HTML ke browser dengan tajuk. Dan skrip akan dieksekusi di server.
Ada beberapa hal yang perlu diingat dan beberapa kemungkinan peningkatan:
1) semua orang akan bisa mengenai halaman ini, juga robot. Anda bisa mengamankan halaman dengan htacces.
2) Halaman ini akan diaktifkan jika ada permintaan "GET" normal dari browser. Tapi itu melibatkan tindakan di server, dan jika tindakan ini mengubah data atau melakukan sesuatu yang penting, akan lebih baik untuk hanya memecat skrip pada permintaan POST.
3) Anda dapat memasukkan pernyataan form / tombol untuk dapat memuat ulang / mengeksekusi kembali halaman. Pastikan untuk menggunakan metode yang tepat (GET atau POST) dalam atribut metode pernyataan formulir HTML.
4) Akan lebih baik untuk mendapatkan hasil dari skrip shell (kode rturn dan mungkin keluaran teks) dan menulisnya ke browser. Ini memiliki masalah yang cukup untuk qustion terpisah:)
sumber
Ini bisa menjadi masalah izin.
Saat Anda memicunya menggunakan webapp , itu adalah apache yang menjalankan skrip. Jika apache tidak memiliki izin untuk menjalankan skrip itu tidak akan berfungsi.
Solusi: periksa izin dan coba lagi .. :)
sumber
Saya tahu ini sangat terlambat tetapi saya pikir perlu dicatat bahwa mengkonfigurasi CGI di server akan memungkinkan Anda untuk menjalankan skrip bash sisi-server tanpa menggunakan PHP atau semacamnya.
Saya tahu ini tidak membahas pertanyaan yang diperbarui, tetapi saya menemukan ini ketika mencoba mencari tahu sendiri jadi saya pikir saya akan mempostingnya!
sumber
Untuk menjalankan skrip shell langsung dari browser, Anda harus menambahkan aturan ini ke file .htaccess Anda:
Ini memberitahu server web untuk memperlakukan file .sh sebagai skrip CGI. Jangan lupa untuk mengubah izin file .sh ke 755.
sumber