Sida 1 av 1

Skript för att automatiskt seeda Linux-torrents

Postat: 30 apr 2011, 15:25
av ubot
Jag har skrivit ett skript som startar Transmission (eller valfri BitTorrent-klient) och seedar torrents (t.ex. linuxdistros) när skärmsläckaren går igång (dvs när skärmen är låst). Skriptet startar och stänger bara av Transmission om programmet inte körs innan skärmsläckaren går igång. Det gör att du hjälper till att dela ut Linux-distros så fort datorn inte används manuellt. Här är koden till skriptet:

Kod: Markera allt

#!/bin/bash

trans1=$(which transmission | grep -o "transmission")
trans2=$(which transmission-gtk | grep -o "transmission-gtk")
if [[ ! -z "$(which $1)" ]]; then
    trans=$1
elif [[ "$trans1" == "transmission" ]]; then
    trans='transmission'
elif [[ "$trans2" == "transmission-gtk" ]]; then
    trans='transmission-gtk'
else
#    echo "Script could not find transmission or transmission-gtk. $(date +%Y\-%m\-%d\ %H\:%M)." >> transmission.txt
    exit
fi

while true; do
#    echo "Script was executed $(date +%Y\-%m\-%d\ %H\:%M)." >> transmission.txt
    sleep 60
    status=$(LC_ALL=C gnome-screensaver-command -q | grep -o "active\|inactive")
    pid=$(pidof $trans)
    if [[ "$status" == "active" && -z "$pid" ]]; then
        $trans &
        check=yes
    elif [[ "$status" == "inactive" && "$check" == "yes" ]]; then
        killall -q $trans
        check=no
    fi
done
Så här gör man för att hjälpa till att seeda linuxdistros:

1. Skapa ett tomt dokument och kopiera och klistra in koden här ovanför.

2. Sätt exekveringsrättigheter på filen med kommandot:

Kod: Markera allt

chmod +x /path/to/script.bash
där script.bash är dokumentet du skapade under punkt 1.

3. Lägg in sökvägen till skriptet i Ubuntus Uppstartsprogram (System -> Preferences -> Startup Applications), t.ex.: /home/username/Scripts/script.bash

4. Ladda ner ett gäng linuxdistros som vanligt med Transmission så att det finns något att dela ut när skriptet startar Transmission nästa gång (tänk på att ladda ner distron via BitTorrent):
http://www.ubuntu.com/download/ubuntu/a ... ownload#bt
http://www.linuxmint.com/release.php?id=15
http://www.kubuntu.org/getkubuntu/download
http://fedoraproject.org/en/get-fedora-all

Klart!

Re: Skript för att automatiskt seeda Linux-torrents

Postat: 01 maj 2011, 09:43
av m!rage
Schysst! "status" behöver dock ändras till aktiv respektive inaktiv i svenska Ubuntu. Kanske går det att göra en universell lösning som istället frågar över Dbus, men det är ett annat problem. Vilken transmission kör du? Den som följer med Ubuntu heter transmission-gtk.

Re: Skript för att automatiskt seeda Linux-torrents

Postat: 01 maj 2011, 16:30
av ubot
Jag kör kort och gott med kommandot transmission. Det kommandot i Terminalen på min dator startar vanliga Transmission. Testa själv:

Kod: Markera allt

transmission &
Tack för tipset om status-meddelandet. Det hade jag inte tänkt på. Jag blev fartblind av mitt system. Jag använder eng. Ubuntu-version och då fungerar active, resp. inactive klockrent. Jag modifierade skriptet så att det fungerar i sv. och eng. versionen av Ubuntu. Som du säger så får man hitta en annan lösning om man vill ha ett helt språkoberoende skript.

Re: Skript för att automatiskt seeda Linux-torrents

Postat: 01 maj 2011, 16:41
av Konservburk
ubot skrev:Tack för tipset om status-meddelandet. Det hade jag inte tänkt på. Jag blev fartblind av mitt system. Jag använder eng. Ubuntu-version och då fungerar active, resp. inactive klockrent. Jag modifierade skriptet så att det fungerar i sv. och eng. versionen av Ubuntu. Som du säger så får man hitta en annan lösning om man vill ha ett helt språkoberoende skript.
Så här gör du om du alltid vill ha samma utdata oberoende av vilket språk du använder:

Kod: Markera allt

LC_ALL=C gnome-screensaver-command -q

Re: Skript för att automatiskt seeda Linux-torrents

Postat: 01 maj 2011, 16:45
av ubot
Ok, jag testade det här kommandot:

Kod: Markera allt

qdbus org.gnome.ScreenSaver /ScreenSaver org.gnome.ScreenSaver.GetActive
Får man true och false oberoende av språket i distron eller översätts true och false till sant och falskt?

Edit: Jag gjorde det lätt för mig. Jag använde Konservburks kod istället:

Kod: Markera allt

LC_ALL=C gnome-screensaver-command -q
Tack för tipset/tipsen!

Re: Skript för att automatiskt seeda Linux-torrents

Postat: 01 maj 2011, 16:51
av m!rage
ubot skrev:Jag kör kort och gott med kommandot transmission. Det kommandot i Terminalen på min dator startar vanliga Transmission. Testa själv:

Kod: Markera allt

transmission &
"kommandot hittades inte". Pratar vi om samma Transmission, dvs det GUI som följer med Ubuntu vid installation? Vad får du av

Kod: Markera allt

file $(which transmission)
?

Re: Skript för att automatiskt seeda Linux-torrents

Postat: 01 maj 2011, 16:54
av ubot
/usr/bin/transmission: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
Jag använder 32-bitars Ubuntu 10.10.

Re: Skript för att automatiskt seeda Linux-torrents

Postat: 01 maj 2011, 17:05
av Konservburk
I lucid och maverick heter den /usr/bin/transmission, men i natty har den bytt namn till /usr/bin/transmission-gtk.

Re: Skript för att automatiskt seeda Linux-torrents

Postat: 01 maj 2011, 17:07
av ubot
Jaha. Det var ju inte så bra. Då får jag väl lägga in en versionskontroll eller går det att få namnet på BitTorrent-klienten som är installerad på ett annat sätt?

Edit: Nu har jag moddat skriptet så att det kontrollerar om programmet heter transmission-gtk eller transmission.