Skrypt ma na celu automatyczne wyłączenie programu transmission po zakończeniu pobierania torrentów.
Jeżeli skrypt zostanie wywołany z poziomu root'a wówczas nastąpi wyłączenie komputera.
Przygotowanie transmission do pracy ze skryptem:
- ustawienie rozszerzenia pliku ".part" dla nieskończonych pobierań (przejść na edycja >> preferencje >> zakładka torrenty >> sekcja Pobieranie i zaznaczyć check box obok "Dodawanie '.part' do nazw nieukończonych plików"),
- zapisywanie plików w (ta sama lokalizacja co powyżej, ja ustawiłem wspólny katalog dla ukończonych oraz nieukończonych pobierań),
- można ustawić wywołanie skryptu po ukończeniu torrenta (ta sama lokalizacja co powyżej), ja z tej opcji nie korzystam, ponieważ gdybym chciał aby wyłączyć komputer po zakończeniu pobierania za pomocą tej opcji, transmission musiało by zostać uruchomione z poziomu root'a (potencjalne zagrożenie bezpieczeństwa).
Po stronie systemu operacyjnego:
- uruchamianie skryptu z poziomu zwykłego użytkownika za pomocą crontaba (nastąpi wyłączenie transmission bez wyłączenia komputera)
- uruchamianie skryptu z poziomu root'a za pomocą crontaba (nastąpi wyłączenie transmission oraz wyłączenie komputera)
Dodawanie skryptu do crontaba (zwykły użytkownik):
- w konsoli crontab -e i dodanie wiersza
*/2 * * * * /bin/bash /home/pawel/torrent_killer.sh
W powyższym przykładzie skrypt będzie uruchamiany co drugą minutę (przy tej opcji bardziej opłacalne jest ustawienie w transmission automatycznego uruchamiania skryptu po zakończeniu pobierania, ponieważ nastąpi tylko wyłączenie transmission bez wyłączenia komputera).
Dodawanie skryptu do crontaba (root):
- w konsoli crontab -e i dodanie wiersza
*/2 * * * * /bin/bash /home/root/torrent_killer.sh
Przy tej opcji po zakończeniu pobierania nastąpi wyłączenie komputera.
Zawartość skryptu:
#!/bin/bash
# Variables
Download_Folder="/home/pawel/Pobrane/torrenty/"
Killer=`ps aux | grep transmission | grep -v grep | awk '{print $2}'`
# Sprawdzenie czy w katalogu pobierań znajdują się niezakończone pobierania
# Instrukcja warunkowa sprawdzająca czy wszystkie pobierania się zakończyły i wyłączająca klienta transsmision
if [ ! -z `pidof transmission` ] && [ ! -z `find $Download_Folder -name \*.part -type f | head -n1 |awk '{print $1}'` ]
then echo "Znaleziono pliki"
else
if [ ! -z `pidof transmission` ]
then echo "Nie znaleziono plików *.part, ubijam transsmision" && kill -9 $Killer && halt -p
else
echo "Transmission nie jest uruchomiony"
fi
fi
Komentarz do skryptu:
Download_Folder - musi być ustawiony taki sam jak w programie transmission, żeby można było odnaleźć pliki z niedokończonymi pobieraniami
Killer - znalezienie id procesu programu transmission w celu późniejszego jego wykorzystania do zamknięcia transmission
pierwszy if - sprawdzenie czy program transsimison działa jeżeli tak to sprawdzenie czy w Download_Folder znajdują się pliki *.part, (potrzebne były head i awk aby wyświetlić tylko jedną wartość, w przeciwnym wypadku test otrzymywałby zbyt wiele argumentów). Jeżeli zostały znalezione pliki part jest wyświetlany komunikat "Znaleziono pliki" i kończone jest wykonywane skryptu. Konieczne jest sprawdzenie działania programu transmission w przeciwnym wypadku przy dodaniu skryptu do crona z poziomu root'a komputer by się cały czas wyłączał.
drugi if - sprawdzenie czy program transmission działa, jeśli tak to jest wyświetlany komunikat "Nie znaleziono plików *.part, ubijam transsmision" oraz wykonywane jest zamknięcie programu transmission (zwykły użytkownik) lub zamkniecie programu i wyłączenie komputera (root).
ostatni else - jeżeli program transmission nie jest uruchomiony następuje wyświetlenie komunikatu "Transmission nie jest uruchomiony" i kończone jest działanie skryptu
Uwagi:
- skrypt jest trochę rozbudowany (overkill :) ) jak na taką prostą czynność, można to zrobić inaczej ale do moich potrzeb nadaje się idealnie,
- na moim komputerze miałem wcześniej włączone uruchamianie skryptu z poziomu zwykłego użytkownika co minutę ale czasami następowało wyłączenie transmission zanim zostało rozpoczęte pobieranie, więc częstotliwość została zmieniona do dwóch minut
- jeżeli ktoś będzie chciał korzystać ze skryptu do wyłączania komputera po zakończeniu pobierania oprócz uruchamiania crona z konta użytkownika root należy rozważyć uruchamianie w większych odstępach czasu np. 5 lub 10 minut. Nie powinno się mieć przy tym ustawieniu włączonego automatycznego uruchamiania transmission po włączeniu komputera - przy braku pobierania torrentów następowałoby automatyczne wyłączanie komputera.
Pokazywanie postów oznaczonych etykietą Automatyczne wyłączenie komputera po zakończeniu pobierania transmission. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Automatyczne wyłączenie komputera po zakończeniu pobierania transmission. Pokaż wszystkie posty
wtorek, 1 kwietnia 2014
Subskrybuj:
Posty (Atom)