Saya perlu membuat skrip bash untuk membuat dan memasang drive. Jadi, dua perintah sederhana. Keduanya "berfungsi" saat dimasukkan pada baris perintah.
Skrip dibuat dan dieksekusi setiap kali pengguna biasa masuk, jadi saya perlu metode untuk membuat skrip ini dapat dieksekusi pada saat itu. Sejauh ini, saya tidak bisa mendapatkan ini berfungsi. Sebagai contoh, bagian pertama mkdir /vvv/gggg
tidak melanjutkan karena skrip tidak dapat dieksekusi (saya menduga).
Semoga ini masuk akal. Apakah ini mungkin? Setiap pemikiran tentang cara membuat karya ini akan dihargai.
Perbarui :
Terima kasih atas tanggapan Anda. Saya mungkin harus menambahkan beberapa informasi tambahan selain saya baru mengenal Linux.
Saya menggunakan aplikasi desktop virtual open source yang disebut Ulteo. Aplikasi ini berjalan di atas Ubuntu dan memiliki sedikit dukungan - itu sebabnya saya ada di sini. Pada dasarnya, saya belajar dengan api.
Jadi, ada aplikasi yang memiliki fungsi manajemen skrip login di mana saya bisa mengikat skrip ke pengguna. Skrip windows sederhana dengan penggunaan internet berfungsi dengan sangat baik. Namun, ketika saya mencoba menerapkan skrip bash Linux tidak ada yang terjadi.
Saya berpikir bahwa karena saya perlu melakukan chmod +x
menentang skrip terlebih dahulu untuk membuat skrip dapat dieksekusi, ini sebabnya gagal. Ngomong-ngomong, Ulteo berlari di penjara chroot. Saya telah membuat skrip, menyimpannya dan tidak dapat menemukan skrip. Saya mencari di dalam dan di luar penjara chroot.
Saya suka pendekatan oleh dan08 untuk memiliki referensi skrip awal skrip lain yang dapat saya temukan dan membuat dieksekusi secara manual. Apakah saya akan mengalami masalah yang sama?
Apakah informasi tambahan ini mengklarifikasi situasinya? Terima kasih sebelumnya.
Foto terlampir.
! [login scipt management console] [1]
! [skrip windows yang berfungsi] [2]
! [skrip linux sederhana yang tidak berfungsi] [3]
Maaf saya belum bisa mengirim gambar
sumber
ls -l scriptname
. Anda juga harus mengklarifikasi bagaimana tepatnya skrip dibuat dan mengapa Anda tidak hanya membuatnya sekali dan membiarkannya saja. Akhirnya, pengguna normal Anda seharusnya tidak memiliki akses tulis/var
dan karenanya tidak dapat membuat direktori di sana.Jawaban:
Ada dua hal yang perlu Anda lakukan:
Referensi penerjemah skrip di awal skrip:
Tetapkan izin untuk membuatnya dapat dieksekusi:
sumber
Daripada membuat skrip Anda dapat dieksekusi, Anda dapat mengambil pendekatan yang berbeda dan mengubah cara Anda memanggil skrip.
script.sh
sudah cukup untuk menjalankan skrip yang dapat dieksekusi.Namun
Dimungkinkan untuk menjalankan skrip non-exectuable jika Anda menentukan program untuk menjalankannya.
Jadi
/bin/bash script.sh
ataubash script.sh
ataupython script.py
semua akan menjalankan skrip yang tidak dapat dieksekusi.Jadi saran saya adalah mengedit cara penulisan skrip, dan menentukan biner yang digunakan untuk menjalankannya.
sumber
os.execv(__file__, sys.argv)
tidak akan berfungsi, dan pastinya ada lebih banyak situasi seperti itu. Jika keamanan adalah tujuan, gunakan saja dari root / sudo alih-alih biarkan pengguna menjalankan binari. Juga, jika tujuannya adalah keamanan, Anda tidak ingin mereka dapat menjalankan skrip, karena Anda tetap dapat merusak sistem ... dapat dieksekusi atau tidak. Jadi saya tidak melihat mengapa penting untuk menghindari membuatnya menjadi executable.Buat program dalam C, C ++ atau Python dll dan gunakan perintah sistem untuk mengeksekusi skrip bash.
Misalnya program C akan terlihat seperti:
Untuk menjalankan program saat startup tambahkan ke daftar program startup. Buka Aplikasi Startup dari dasbor Anda dan tambahkan executable yang dikompilasi ke daftar dengan mengklik tombol add.
sumber
bash path/yourbashscript.sh
.bash path/yourbashscript.sh
langsung alih-alih menyusun dan menjalankan program C ini?Anda dapat membuat skrip bash Anda dapat dieksekusi dengan menjalankan yang berikut di baris perintah.
Kemudian, membuatnya dijalankan pada saat start up dapat dilakukan dengan menambahkannya ke daftar program startup Anda seperti kata @akabhirav.
sumber
SHC adalah kompiler skrip shell generik. Dibutuhkan skrip, yang ditentukan pada baris perintah dan menghasilkan kode sumber C. Kode sumber yang dihasilkan kemudian dikompilasi dan dihubungkan untuk menghasilkan biner yang dilucuti.
Biner yang dikompilasi masih akan bergantung pada shell yang ditentukan pada baris pertama kode shell (shebang:
#!/bin/sh
atau semacamnya), sehingga SHC tidak membuat binari yang sepenuhnya independen.SHC sendiri bukan kompiler seperti
cc
. Melainkan mengkodekan dan mengenkripsi skrip shell dan menghasilkan kode sumber C dengan kemampuan kedaluwarsa yang ditambahkan. Ini kemudian menggunakan kompiler sistem untuk mengkompilasi biner dilucuti yang berperilaku persis seperti skrip aslinya. Setelah dieksekusi, biner yang dikompilasi akan mendekripsi dan mengeksekusi kode dengan opsi shell-c
.sumber
#!
danchmod +x
?