Script Bash: ควบคุมแบนด์วิดท์การส่งโดยอัตโนมัติ

สวัสดีทุกคน. นี่เป็นกระทู้ที่สองของฉัน ฉันมักจะไม่เขียนโพสต์เว้นแต่จะมีอะไรดีๆมาแบ่งปันและคราวนี้ฉันมีบางอย่างที่หลาย ๆ คนจะต้องสนใจ

เมื่อสองสามเดือนก่อนฉันกำลังคิดที่จะสร้างสคริปต์เพื่อ จำกัด แบนด์วิดท์ของแอปพลิเคชัน แต่ฉันมีปัญหาและข้อผิดพลาดบางอย่างที่ทำให้ฉันลำบากดังนั้นฉันจึงตั้งข้อสงสัยใน ฟอรั่ม de <oจากLinux เผื่อว่าใครมีความคิด

ดังนั้นฉันจึงทิ้งมันไว้สักพักและวันหนึ่งฉันก็ตัดสินใจกลับมาเขียนบทต่อ ฉันทำการทดสอบหลายครั้งฉันอ่านเกี่ยวกับการทุบตีมากมายและฉันก็ปวดหัวในเวลาว่าง แต่ฉันทำมัน !!

ฉันมีความพึงพอใจอย่างมากดังนั้นฉันจึงตัดสินใจแบ่งปันสคริปต์เล็ก ๆ น้อย ๆ ของฉันกับคุณเพื่อให้คุณสามารถใช้และปรับปรุงได้ ฉันวางแผนที่จะอนุญาตให้ใช้สิทธิ์ภายใต้ GPLv3 แต่เป็นโครงการแรกของฉันดังนั้นฉันจึงไม่ค่อยแน่ใจว่าจะทำอย่างไร (ฉันต้องการคำแนะนำจากผู้ที่เคยทำมาก่อน)

ตอนนี้ฉันจะอธิบายว่าความต้องการของฉันคืออะไรและฉันทำอะไรเพื่อแก้ปัญหา

สถานการณ์
ฉันมีแผนอินเทอร์เน็ต 512Kbs ดังนั้นฉันจึงใช้ ระบบเกียร์ เป็นไคลเอนต์ BitTorrent เพื่อดาวน์โหลดไฟล์ขนาดใหญ่ (เช่น LibreOffice และ GNU / Linux distros บางตัว) ด้วยความเร็วดังกล่าวทำให้การดาวน์โหลดใช้เวลานานและปัญหาคือเมื่อใช้เว็บเบราว์เซอร์ Firefox: ใช้เวลาโหลดนาน

เมื่อฉันเชื่อมต่ออินเทอร์เน็ตฉันเปิดใช้งานขีด จำกัด เวลาในการอัปโหลดและดาวน์โหลดของ Transmission และรอให้ Firefox โหลดจากนั้นเริ่มเพลงใหม่อีกครั้ง อย่างที่คุณเห็นการทำสองสามครั้งเป็นเรื่องน่าเบื่อ ไม่ต้องพูดถึงว่าบางครั้งฉันหยุดเพลงทั้งหมดชั่วคราวทันทีแล้วลืมเปิดใช้งานอีกครั้งทำให้เสียเวลาอันมีค่าในการอัปโหลด / ดาวน์โหลดเพลง

ทางออก
สำหรับปัญหานี้ฉันตัดสินใจสร้างสคริปต์ Bash ซึ่งโดยทั่วไปจะทำสิ่งต่อไปนี้:

1. ตรวจสอบว่า Transmission กำลังทำงานอยู่และไม่มีการหยุดทอร์เรนต์ชั่วคราว ถ้าเป็นเช่นนั้นให้เปิดเพลงอีกครั้ง

2. ตรวจสอบว่า Firefox กำลังทำงานอยู่ จากนั้นจะได้รับ KB / s ที่ส่งและรับและบันทึกไว้ในไฟล์

3. หากเบราว์เซอร์อัปโหลด / ดาวน์โหลด KB / s เกินช่วงอ้างอิงการตั้งค่าการอัปโหลด / ดาวน์โหลดการส่งข้อมูลจะเปลี่ยนไป

สิ่งนี้ช่วยให้เมื่อต้องการเข้าถึงเว็บเพจเมื่อเบราว์เซอร์ส่งคำขอการอัปโหลดไฟล์การส่งจะถูก จำกัด และเมื่อได้รับข้อมูลเพจการดาวน์โหลดจะถูก จำกัด วิธีนี้ใช้งานได้ดีเมื่อเข้าถึงหลายเพจพร้อมกันและผลลัพธ์ก็เหมือนกับการปิดการส่งข้อมูล

ข้อได้เปรียบที่ดีคือมันเป็นไปโดยอัตโนมัติและไม่ต้องการการแทรกแซงของฉัน

สคริปต์
แม้ว่าจะสามารถใช้เพื่อควบคุมการใช้แบนด์วิดท์ของแอปพลิเคชันใด ๆ ก็ตามในขณะนี้มีการเขียนขึ้นเพื่อแก้ปัญหาที่เฉพาะเจาะจงเท่านั้น แต่ก็ไม่ยากที่จะทำการปรับเปลี่ยน

Requisitos
เพื่อให้ทำงานได้อย่างถูกต้องจำเป็นต้องมีแอปพลิเคชัน«ตาข่ายhog'

ในกรณีนี้เนื่องจากสคริปต์ทำงานร่วมกับ Firefox และ Transmission จึงจำเป็นต้องมีการติดตั้งแอปพลิเคชันเหล่านี้นอกเหนือจาก "transmission-remote" ซึ่งเป็นสิ่งที่เปลี่ยนแปลงค่าการอัปโหลดและดาวน์โหลดของทอร์เรนต์ ฉันยังใช้ในสคริปต์ "awk" ฉันพูดถึงมันเพราะฉันไม่รู้ว่ามีการติดตั้ง distros ทั้งหมดหรือไม่

ซอฟต์แวร์ที่ใช้
รายการแอปพลิเคชันที่สคริปต์ใช้และระบบที่ทำงาน

• Debian GNU / Linux 6.0.8
•ลินุกซ์ 2.6.32-5-686
• Firefox 24.0
•เกียร์ 2.03 (11030)
• Nethogs 0.7.0

การปฏิบัติ
ต้องรันเป็น root เนื่องจาก ตาข่ายhog สามารถเรียกใช้กับผู้ใช้รายนั้นเท่านั้น แต่ ระบบส่งสัญญาณระยะไกล มันถูกดำเนินการกับผู้ใช้ปกติโดยใช้คำสั่ง ของเขา

สคริปต์ใช้คำสั่ง Bash ภายใน กับดัก ซึ่งเป็นไปได้ที่จะเรียกคืนค่าเริ่มต้นของการโหลด / ยกเลิกการโหลดการส่งเมื่อหยุดโดยสัญญาณ SIGINT (CTRL + c) หรือ SIGTERM

ยังไม่แน่ใจว่าต้องทำอย่างไรจึงจะรันเมื่อเริ่มต้นระบบและหยุดเมื่อฉันปิดเครื่องหรือรีสตาร์ทคอมพิวเตอร์ ฉันคิดว่าจะใส่ลิงค์ลงในไฟล์ /etc/rc.local แต่ฉันไม่รู้ว่ามันจะใช้ได้ไหมและฉันไม่เข้าใจวิธีการทำงานของ / etc /เริ่มต้น d (ฉันเห็นบางสคริปต์ที่มีแม้กระทั่ง โครงกระดูกแต่ฉันไม่เข้าใจ) หากใครสามารถช่วยฉันได้ฉันจะขอบคุณมาก

ก็คนนั่นแหละ ฉันหวังว่าผลงานเล็ก ๆ น้อย ๆ ของฉันจะเป็นประโยชน์สำหรับคุณและคุณสามารถปรับปรุงได้หากต้องการ ฉันยินดีที่จะอ่านความคิดเห็นและคำแนะนำของคุณตลอดจนข้อเสนอแนะในกรณีที่ไฟล์มีปัญหาด้านความปลอดภัย (ฉันไม่ใช่โปรแกรมเมอร์ฉันทำเพียงไม่กี่ครั้งเท่านั้น)

ฉันรู้ว่าด้วยการแก้ไขบางอย่างมันอาจกลายเป็นแอปพลิเคชั่นที่ยอดเยี่ยมในอนาคตเพราะฉันไม่รู้ว่ามีโปรแกรมอะไรที่ทำเหมือนกัน ตัวอย่างเช่นเกิดขึ้นกับฉันว่าฉันสามารถมีอินเทอร์เฟซแบบกราฟิกในไฟล์ ความยอดเยี่ยม และเพื่อให้สามารถเลือกแอปพลิเคชันที่เราต้องการจัดลำดับความสำคัญในการใช้แบนด์วิดท์ (เว็บเบราว์เซอร์ตัวจัดการการอัปเดตการถ่ายโอนไฟล์ ฯลฯ ) และค่าอ้างอิงที่แตกต่างกัน ใช่มันค่อนข้างทะเยอทะยาน แต่มีประโยชน์มาก

คุณสามารถดาวน์โหลดสคริปต์ในไฟล์ พาสต้า. ขอบคุณมากที่อ่าน !!


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google