Saya mengalami beberapa masalah dengan ini, saya memiliki skrip yang seharusnya memulai airodump-ng saat boot tetapi biasanya hanya menjalankan bagian pertama dari skrip dan hanya itu.
Saya telah mencoba membuat file layanan systemd dan mengaktifkannya tetapi skrip tidak berjalan sebagai root.
Saya mencoba ini di kedua lengkungan linux dan debian tetapi dalam debian saya pergi rute skrip init tetapi masih skrip tidak akan berjalan sebagai root.
Skrip saya:
!#/bin/bash
ifconfig wlan0 down
sleep 5
airmon-ng start wlan0
sleep 5
airodump-ng mon0
exit 0
File layanan:
[Unit]
Description=auto start airmon
[Service]
ExecStart=~/scripts/cap.sh
Type=oneshot
User=root
[Install]
WantedBy=multi-user.target
Sunting * Ini adalah output dari status systemctl:
ap.service - auto start airmon
Loaded: error (Reason: Invalid argument)
Active: inactive (dead)
Jan 13 13:03:44 alarmpi systemd[1]: [/etc/systemd/system/cap.service:5] Executable path is not absolute, ignoring: ~/scripts/cap.sh
Jan 13 13:03:44 alarmpi systemd[1]: cap.service lacks ExecStart setting. Refusing.
Jan 13 13:47:08 alarmpi systemd[1]: [/etc/systemd/system/cap.service:5] Executable path is not absolute, ignoring: ~/scripts/cap.sh
Jan 13 13:47:08 alarmpi systemd[1]: cap.service lacks ExecStart setting. Refusing.
&
di akhir baris (bukan padasleep
yang tentu saja).systemctl status $YOURSERVICE
(apa pun layanan itu) dalam pertanyaan Anda. Dan periksa apakah Anda mengetik skrip itu dengan benar. Orang akan langsung melompat pada satu kesalahan yang cukup jelas yang mungkin hanya kesalahan pengetikan Anda di sini.Jawaban:
Jurnal itu sebenarnya memberi tahu Anda mengapa layanan Anda tidak akan dimulai.
Apa yang dikatakannya adalah bahwa unit layanan bukan skrip shell. Anda tidak mendapatkan, terlepas dari beberapa sangat barang-barang khusus, hal-hal seperti
~
variabel ekspansi atau lingkungan dalam unit layanan. Nama yang Anda lewatiExecStart
harus jalan biasa, absolut, dari program untuk dijalankan. Nama Anda~/system/cap.sh
, yang merupakan (tentu saja) jalur relatif bukan jalur absolut. Ini bukan shell.~
bukan metacharacter. Ini adalah karakter biasa, menunjukkan beberapa subdirektori yang diklaim dari direktori saat ini bernama~
.systemd menolak untuk menerima
ExecStart
dengan pathname relatif. Dan itu menolak, jelas cukup, untuk memulai layanan yang tidak memiliki yang validExecStart
yang menjelaskan bagaimana layanan dimulai.Setelah memperbaikinya, Anda kemudian perlu memperbaiki skrip Anda sehingga sebenarnya skrip yang dapat dieksekusi dengan benar. Perlu memiliki izin menjalankan dan memiliki
#!
dieja dengan benar pada baris pertama. Juga perhatikan bahwa tidak ada yang memerlukan shell Bourne Again, dan itu ide yang baik untuk diikuti Keunggulan Debian dalam menggunakan Almquist daripada shell Bourne Again dalam skrip dijalankan sebagai bagian dari sistem bootstrap .Anda mungkin ingin men-tweak file layanan Anda sehingga tidak mengutak-atik antarmuka jaringan secara paralel dengan sistem yang menginisialisasi mereka di tempat pertama. Apa artinya itu khusus untuk sistem Anda , jadi Anda harus mencari tahu apa yang harus dimasukkan sebagai
After=
dalam file unit Anda.sumber