Ciao a tutti. Questo è il mio secondo post. Di solito non scrivo post a meno che non abbia qualcosa di buono da condividere e questa volta ho qualcosa che sicuramente molti saranno interessati.
Qualche mese fa stavo pensando di realizzare uno script per limitare la larghezza di banda delle applicazioni, ma avevo alcuni problemi ed errori che mi rendevano difficile, quindi ho sollevato i miei dubbi nel foro de <º FromLinux nel caso qualcuno avesse un'idea.
Così l'ho lasciato per un po 'e un giorno ho deciso di riprendere la sceneggiatura. Ho fatto molti test, ho letto molto sulla bash e ho avuto mal di testa nel tempo libero, ma ce l'ho fatta !!
Ho enormi soddisfazioni e quindi ho deciso di condividere con voi il mio copione in modo che possiate utilizzarlo e migliorarlo. Ho intenzione di licenziarlo sotto GPLv3, ma è il mio primo progetto quindi non sono abbastanza sicuro di come farlo (ho bisogno di consigli da chi lo ha fatto prima).
Bene, ora ti spiego qual era la mia esigenza e cosa ho fatto per risolvere il problema.
Situazione
Ho un piano Internet di 512Kbs, quindi utilizzo Trasmissione come client BitTorrent per scaricare file di grandi dimensioni (come LibreOffice e alcune distribuzioni GNU / Linux). Con quella velocità i download richiedono molto tempo e il problema è quando si utilizza il browser web Firefox: richiede molto tempo per il caricamento.
Quando mi collego a Internet, attivo i limiti di tempo per il caricamento e il download della trasmissione e aspetto il caricamento di Firefox, quindi avvio nuovamente i torrent. Come vedrai, farlo un paio di volte è noioso. Per non parlare del fatto che a volte metto in pausa tutti i torrent e poi dimentico di attivarli di nuovo, il che porta a sprecare tempo prezioso per il caricamento / download dei torrent.
Soluzione
Per questo problema ho deciso di creare uno script in Bash che fondamentalmente fa quanto segue:
1. Verifica che la trasmissione sia in esecuzione e che nessun torrent sia in pausa. In tal caso, riattiva i torrent.
2. Verifica che Firefox sia in esecuzione. Quindi ottiene i KB inviati e ricevuti da esso e li salva in un file.
3. Se il caricamento / download del browser KB / s supera un intervallo di riferimento, le impostazioni di caricamento / download della trasmissione vengono modificate.
Ciò consente che quando si desidera accedere a una pagina Web, quando il browser invia la richiesta, il caricamento del file di trasmissione è limitato e quando vengono ricevuti i dati della pagina, il download è limitato. Funziona alla grande quando si accede a più pagine contemporaneamente ei risultati sono effettivamente gli stessi della trasmissione disabilitata.
Il grande vantaggio è che è completamente automatico e non richiede il mio intervento.
Il copione
Sebbene possa essere utilizzato per controllare il consumo di larghezza di banda di qualsiasi applicazione, al momento è scritto solo per risolvere un problema molto particolare. Ma non è molto difficile apportare modifiche.
Requisiti
Perché funzioni correttamente è necessario avere l'applicazione «nehogs'.
In questo caso, poiché lo script funziona con Firefox e Transmission, è necessario che siano installate queste applicazioni, oltre a "Transmission-Remote" che è quello che cambia i valori di upload e download dei torrent. Uso anche nello script "awk". Lo menziono perché non so se tutte le distribuzioni lo abbiano installato.
Software utilizzato
Un elenco delle applicazioni utilizzate dallo script e del sistema in cui funziona.
• Debian GNU / Linux 6.0.8
• Linux 2.6.32-5-686
• Firefox 24.0
• Trasmissione 2.03 (11030)
• Nethogs 0.7.0
Esecuzione
Deve essere eseguito come root perché nehogs può essere eseguito solo con quell'utente, ma trasmissione a distanza viene eseguito con il normale utente tramite il comando su.
Lo script utilizza il comando Bash interno trappola Con il quale è possibile ripristinare i valori di default di carico / scarico della trasmissione, quando questa viene interrotta tramite i segnali SIGINT (CTRL + c) o SIGTERM.
Ancora non so come fare per eseguirlo all'avvio e fermarlo quando spengo o riavvio il computer. Stavo pensando di inserire un collegamento nel file /etc/rc.local ma non so se funzionerebbe e non capisco davvero come funzioni / etc /init.d (Ho visto anche alcuni script che ci sono scheletro, ma non li capisco). Se qualcuno può aiutarmi, te ne sarò molto grato.
Bene ragazzi, questo è tutto. Spero che il mio piccolo contributo ti sia utile e che tu possa migliorarlo se lo desideri. Sarò felice di leggere le vostre opinioni e consigli nonché suggerimenti nel caso in cui ci siano problemi di sicurezza con il file (non sono un programmatore, faccio solo poche cose di tanto in tanto).
So che con alcune correzioni può diventare un'ottima applicazione in futuro, perché non conosco nessun programma che faccia lo stesso. Ad esempio, mi viene in mente che potrei avere un'interfaccia grafica in formato zenit e per poter scegliere le applicazioni a cui vogliamo dare la priorità nell'uso della larghezza di banda (browser web, gestore aggiornamenti, trasferimento file, ecc.) e i diversi valori di riferimento. Sì, è un po 'ambizioso, ma abbastanza utile.
Puoi scaricare lo script nel file incolla. Grazie mille per la lettura !!