เรียกใช้สคริปต์ทุบตีเมื่อเริ่มต้น


19

ฉันรู้ว่าคำถามนี้ถูกถามมาก่อน แต่ฉันไม่สามารถหาวิธีแก้ปัญหาของฉันได้ฉันก็ไม่สามารถทำให้สคริปต์ทำงานเมื่อเริ่มต้นได้ นี่คือสคริปต์ของฉัน:

#!/bin/bash
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT

ฉันใส่ไว้ใน/etc/init.dไดเรกทอรี

ทำให้แน่ใจว่าสามารถเรียกใช้งานได้โดยใช้ chmod 755 /etc/init.d/iptables.sh

และเสร็จแล้ว touch /etc/rc3.d/S01iptables.sh

แต่ไม่มีอะไร :( ... คำแนะนำใด ๆ ?

[พฤศจิกายน 2017] คำตอบที่ได้รับการยอมรับที่นี่ควรจะถือว่าล้าสมัยโปรดดู/raspberrypi//a/75057/5538

คำตอบ:


12

[โปรดดูหมายเหตุในคำถามเกี่ยวกับความล้าสมัยของคำตอบนี้]

ลองใช้คำสั่งนี้เพื่อให้แน่ใจว่าสคริปต์ของคุณถูกเพิ่มในลำดับการบู๊ต:

sudo update-rc.d /etc/init.d/nameofscript.sh defaults

โปรดทราบว่าคุณสามารถสร้างสคริปต์ที่ดำเนินการได้โดยใช้ตัวเลือก + x ด้วย chmod:

chmod +x /etc/init.d/nameofscript.sh

1
ใช่update-rc.dคำสั่งใช้งานได้: D ... ฉันเคยใช้มาก่อน แต่ดูเหมือนว่าจะส่งคืนข้อผิดพลาดดังนั้นฉันจึงไม่สนใจ Lol ... ขอบคุณสำหรับความช่วยเหลือ: D

5
มันจะเป็นอย่างน้อยในเจสซีที่จะหลีกเลี่ยงsudo update-rc.d nameofscript.sh defaults update-rc.d: error: initscript does not exist: /etc/init.d//etc/init.d/nameofscript.sh
derFunk

สคริปต์นี้ต้องจบภายในเวลาอันสมควรหรือไม่? หรือมันสามารถใช้เพื่อวนวิดีโอสำหรับอินฟินิตี้ได้หรือไม่?
clankill3r

19

คุณสามารถตั้งค่า cronjob ( ดูบทช่วยสอน ) เพื่อให้มันทำงานเมื่อเริ่มต้น

(sudo) crontab -e

เพิ่มเฉพาะในsudoกรณีที่สคริปต์ของคุณต้องการสิทธิ์ superuser จากนั้นเพิ่มสิ่งนี้ใน crontab ของคุณ:

@reboot /path/to/script.sh

ฉันใช้วิธีนี้เพื่อเปิดสคริปต์และปิดการเข้าถึง ssh ทั้งหมดด้วยเหตุผลบางอย่าง ฉันต้องติดตั้งไดรฟ์บนอุปกรณ์อื่นของ linux และแสดงความคิดเห็นในบรรทัด crontab
Phill Healey

6

คุณสามารถเพิ่มคำสั่งสคริปต์ปฏิบัติการของคุณไปยังด้านล่างของ.bashrcที่จะเรียกใช้สคริปต์ของคุณเวลาที่คุณเข้าสู่ระบบในทุก

  1. ตรวจสอบให้แน่ใจว่าคุณอยู่ในpiโฟลเดอร์:

    $ cd ~
    
  2. สร้างไฟล์และเขียนสคริปต์เพื่อให้ทำงานในไฟล์:

    $ sudo nano superscript
    
  3. บันทึกและทางออก: Ctrl+ X, Y,Enter

  4. เปิด.bashrcการกำหนดค่า:

    $ sudo nano .bashrc
    
  5. เลื่อนลงไปด้านล่างและเพิ่มบรรทัด: ./superscript

  6. บันทึกและทางออก: Ctrl+ X, Y,Enter


หากคุณกำลังมองหาวิธีแก้ปัญหาที่ใช้งานได้ในการบูทเครื่องไปที่คอนโซลลองดูที่ลิงค์นี้ บทสรุปพื้นฐาน:

  1. สร้างไฟล์สำหรับสคริปต์เริ่มต้นของคุณและเขียนสคริปต์ของคุณในไฟล์:

    $ sudo nano /etc/init.d/superscript
    
  2. บันทึกและทางออก: Ctrl+ X, Y,Enter

  3. ทำให้สคริปต์เรียกใช้งานได้:

    $ sudo chmod 755 /etc/init.d/superscript
    
  4. สคริปต์ลงทะเบียนที่จะทำงานเมื่อเริ่มต้น:

    $ sudo update-rc.d superscript defaults
    

หากคุณต้องการให้สคริปต์ทำงานเมื่อคุณบูตเข้าสู่สภาพแวดล้อม LXDEคุณสามารถดูโพสต์ฟอรัม Raspberry Pi นี้ :

  1. นำทางไปยัง ~/.config/lxsession/LXDE-pi

  2. เปิดautostartไฟล์ในโฟลเดอร์นั้น:

    $ sudo nano autostart
    
  3. เพิ่ม@bash /path/to/scriptname &ในบรรทัดใหม่ หากคุณต้องการเรียกใช้บางสิ่งบางอย่างเช่นสคริปต์หลามให้วางสิ่งที่ชอบ@python mypython.pyในบรรทัดใหม่ การเรียกใช้ไฟล์สคริปต์จะเป็นไปได้@./superscriptแต่ด้วยเหตุผลบางอย่างสคริปต์จะทำงานในวงวนไม่สิ้นสุด (บางทีนี่อาจเป็นการหยุดไฟล์นั้น)

  4. บันทึกและทางออก: Ctrl+ X, Y,Enter

  5. รีสตาร์ท Raspberry Pi ของคุณลงในสภาพแวดล้อม LXDE

นำมาจากรันสคริปต์เมื่อเริ่มต้นขึ้น


1

ฉันมักจะเพียงแค่เพิ่มสายการรันสคริปต์ใน/etc/rc.localเช่นก่อนที่บรรทัดสุดท้ายที่มี/path/to/my/script.sh & exit 0ฉันเพิ่ม "&" เพื่อส่งสคริปต์ไปยังพื้นหลังในกรณีที่มันไม่ส่งคืนมิฉะนั้นคำสั่งถัดไปจะไม่ถูกเรียกใช้งาน

ดังนั้นในกรณีของคุณฉันจะเพิ่มสองบรรทัด

iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT

ในตอนท้ายของก่อน/etc/rc.localexit 0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.