สอง / etc / hosts ที่แตกต่างกันขึ้นอยู่กับเวลา


11

ฉันกำลังพยายามสร้างชุดการเพิ่มผลผลิตสำหรับตัวฉันเอง เป้าหมายแรกของฉันคือการบล็อก Facebook, Gmail และ Stackexchange จาก 0900 ถึง 1600

ณ ตอนนี้ฉันได้แก้ไขของฉัน/etc/hostsและเพิ่ม 0.0.0.0 www.facebook.com และที่คล้ายกันสำหรับ gmail และ stackexchange

แต่ฉันสับสนเล็กน้อยเกี่ยวกับวิธีรวมระยะเวลาการบล็อกในสคริปต์ของฉัน

สิ่งที่ฉันคิดว่ามี 2 ไฟล์ที่แตกต่างกัน (hosts_allow, hosts_block) จากนั้นcp hosts_allow hostsหรือcp hosts_block hostsขึ้นอยู่กับเวลา แต่สิ่งนี้จะต้องใส่วนซ้ำไม่สิ้นสุดหรือบางสิ่งที่ฉันไม่แน่ใจว่าเป็นวิธีที่ดีที่สุดในการเข้าถึงปัญหา

เบาะแสใด ๆ


แต่ ... แต่ StackExchange ช่วยเพิ่มผลผลิต! :(
kba

@KristianBorupAntonsen ไม่ใช่ตอนที่ฉันกำลังพยายามเรียนรู้แคลคูลัสหลายตัวแปร: P

1
math.SE มีประโยชน์เสมอ! :)
kba

คำตอบ:


19

cronใช้

พูดแบบcrontab -e รูท - หรือsudo crontab -eหากคุณsudoตั้งค่า - และใส่สิ่งต่อไปนี้ในไฟล์ที่ปรากฏในตัวแก้ไขข้อความ:

0  9 * * * cp /etc/hosts_worktime /etc/hosts
0 16 * * * cp /etc/hosts_playtime /etc/hosts

สิ่งนี้บอกว่าในนาทีที่ zeroth ของวันที่ 9 และ 16 ของทุกวันของเดือนให้เขียนทับ/etc/hostsโดยใช้คำสั่งเชลล์ที่ให้

คุณอาจต้องการบางสิ่งที่ซับซ้อนกว่านี้เล็กน้อย:

0  9 * * 1-5 cp /etc/hosts_worktime /etc/hosts
0 16 * * 1-5 cp /etc/hosts_playtime /etc/hosts

การเปลี่ยนแปลงครั้งเดียวนั่นคือการเปลี่ยน1-5ตำแหน่งที่ห้ากล่าวว่าการเปลี่ยนแปลงระหว่างเวลาทำงานและเวลาเล่นเกิดขึ้นเฉพาะวันจันทร์ถึงวันศุกร์

พูดman 5 crontabเพื่อรับคำอธิบายแบบเต็มของสิ่งที่คุณสามารถทำได้ในcrontabไฟล์

โดยวิธีการที่ผมเปลี่ยนชื่อของคุณhostsไฟล์ข้างต้นเนื่องจากhosts_allowใกล้เกินไปที่จะhosts.allowใช้โดยTCP ห่อ


9
+1 สำหรับการเปลี่ยนชื่อไฟล์เพื่อลดความคล้ายคลึงกัน tcpwrappers นอกจากนี้ฉันขอแนะนำln -fไม่ใช่cp- ง่ายเกินไปที่จะลืมว่าการเปลี่ยนแปลงใด ๆ ที่จะ/etc/hostsถูกลบออกวันละสองครั้งและซอฟต์แวร์ใด ๆ ที่แก้ไข/etc/hostsจะไม่ทราบ ด้วยlnอย่างน้อยคุณจะมีสำเนาการเปลี่ยนแปลงอย่างต่อเนื่อง (อย่างใดอย่างหนึ่งที่แอ็คทีฟ)
Alexios

@Alexios: ไม่มีข้อโต้แย้ง
Warren Young

3

หากคุณมีhostsไฟล์ต่างกัน 2 ไฟล์คุณสามารถกำหนดเวลางาน cron เพื่อเขียนทับไฟล์ใน/etcเวลาที่ระบุในระหว่างวัน

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