Sida 4 av 7

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 00:30
av BadOmen
ååå apt-get det var härligt simpelt :)
detta meddelande får jag när jag kör med -p kvar
awk: line 2: syntax error at or near {
awk: line 6: syntax error at or near :
awk: line 9: syntax error at or near :
awk: line 12: syntax error at or near :
awk: line 15: syntax error at or near :
-:1: parser error : Start tag expected, '<' not found
[['ubuntu-7.10-desktop-amd64.iso', 0, 0, 1394, 1394], ['ubuntu-8.04-desktop.
Det visas i terminalen :) Ubuntu nedladdningarna gör jag bara för att det är lagligt och för att jag kan testa det vi gör :)

Utan -p så blir det så här:
awk: line 2: syntax error at or near {
awk: line 6: syntax error at or near :
awk: line 9: syntax error at or near :
awk: line 12: syntax error at or near :
awk: line 15: syntax error at or near :
awk: line 2: syntax error at or near {
awk: line 6: syntax error at or near :
awk: line 9: syntax error at or near :
awk: line 12: syntax error at or near :
awk: line 15: syntax error at or near :
awk: line 2: syntax error at or near {
awk: line 6: syntax error at or near :
awk: line 9: syntax error at or near :
awk: line 12: syntax error at or near :
awk: line 15: syntax error at or near :
Traceback (most recent call last):
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 235, in <module>
main(sys.argv[1:])
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 226, in main
convert_params_to_native(argv[2:]))
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 51, in do_scgi_xmlrpc_request
xmlresp = SCGIRequest(host).send(xmlreq)
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 111, in send
scgiresp = self.__send(self.add_required_scgi_headers(data))
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 101, in __send
recvdata = resp = sock.recv(1024)
Tycker att det verkar som att jag ska köra med -p för då är xmlrpc2scgi nöjd och belåten och det är bara nån liten miss i ditt script då. Den här delen syftade jag på:
Start tag expected, '<' not found

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 01:04
av Konservburk
Nej, det ska vara utan -p så att det blir xml-formaterad utdata. Annars kan inte xmlstarlet hantera det hela. När det gäller problemen med awk så beror det nog på att jag har använt mig av syntax som bara fungerar med gawk av någon anledning... så går det när man inte provkör det man kodar. :P

Vi försöker igen, med switch-satsen utbytt mod en if-sats istället:

Kod: Markera allt

#!/bin/sh
"$@" d.multicall started \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
|
xmlstarlet sel -t -v / |
sed '/^$/d' |
awk '{
   if (NR%5 == 1) name=$0
   else if (NR%5 == 2) up[name]=$0
   else if (NR%5 == 3) down[name]=$0
   else if (NR%5 == 4) done[name]=$0
   else if (NR%5 == 0) size[name]=$0
} END {
   for(name in up) {
      up_sum += up[name]
      down_sum += down[name]
      #if(++i<=4)
      {
         printf("Namn: %s\n", name)
         printf("Klart: %d%%\n", 100 * done[name] / size[name])
         printf("Upp: %.1f kB/s\n", up[name] / 1024)
         printf("Ner: %.1f kB/s\n", down[name] / 1024)
         printf("\n")
      }
   }
   printf("Upp totalt: %.1f kB/s\n", up_sum/1024)
   printf("Ner totalt: %.1f kB/s\n", down_sum/1024)
}'

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 13:00
av BadOmen
Där satt den! Funkar finfint det enda lilla lilla som är konstigt det är att det före första Namn: ligger en sån här #

#Namn: Ubuntu.iso
Klar: 29%
Upp: 5 KB/s
Ner: 96 KB/s

Namn: Ubuntu2.iso osv.

Jag märkte också att den sorterar efter namn och att den bara visar de som är startade alltså inte de som är satt som closed i rtorrent men det är ju bara bra :)

Jag såg att du har kommenterat bort if satsen som kollar att det inte blir fler än 4 torrents som visas. Det är iaf inte den # som ställer till det för jag provade att ta bort den men det blev samma resultat :)

EDIT:
Ser att den sorterar namnen baklänges alltså DCBA men det gör ju inte så mucke :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 13:16
av BadOmen
Sorry sorry # före namnet hade smitit in i min conkyrc fil... altså inget fel med ditt script ;D

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 13:27
av Konservburk
BadOmen skrev:Jag märkte också att den sorterar efter namn och att den bara visar de som är startade alltså inte de som är satt som closed i rtorrent men det är ju bara bra :)
BadOmen skrev:
EDIT:
Ser att den sorterar namnen baklänges alltså DCBA men det gör ju inte så mucke :)
Jag trodde inte att den skulle sortera efter namn, varken framlänges eller baklänges. Det borde snarare bero på i vilken ordning man lägger till dem i rtorrent. Men vill du ha det sorterat på något speciellt vis så går ju det såklart att ordna.

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 13:55
av BadOmen
Den verkar sortera det själv då men den sorterar olika om en fil är done eller inte och i bokstavsordning på nåt set och inte i vilken ordning de ligger i rTorrent. Skulle du kunna sortera efter namn, så spelar det inte nån roll hur rTorrent vill sortera? Det spelar ju inte nån roll att inte alla som är Done hamnar efter varandra eftersom man ser det tydligt genom att 100% är klart :)

Så här ser det ut nu iaf. med två torrent och en som är closed :) Den visar inte de som är Closed men det är ju bara bra :)
http://fc01.deviantart.com/fs31/i/2008/ ... Omen02.jpg

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 14:04
av BadOmen
Vist kommunicerar ditt script med xmlrpc2scgi.py i de första raderna?

Kod: Markera allt

"$@" d.multicall started \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
Skulle du kunna göra ett test om rTorrent är igång innan du skickar det till xmlrpc2scgi.py? Det blir ju felmeddelanden annars när ditt script försöker nå rTorrent via xmlrpc2scgi.py när rTorrent inte är igång :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 15:06
av BadOmen
Det är bättre att göra kollen i conky nåt typ så här:

Kod: Markera allt

 ${exec if pidof 'rtorrent'; then ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py /home/jonas/rtorrent_rpc/rpc.socket;fi }
Den skriver dock ut rtorrents pid nummer i conky och det vill man ju inte.

Jag har kunnat starta conky utan rtorrent igång och jag har kunnat stänga av och starta om rtorrent också. Jag fick ett felmeddelande en gån av ca 20 men jag har inte fått det igen ... Ska göra fler tester.

Det som är konstigt är att när jag startar conky nu så för att få den att visa de filer som rtorrent har så måste jag först gå till rTorrent och trycka ctrl + S för att få dem att visas i conky och det även om filerna redan är igång och laddar i rTorrent. Ska testa lite mer :)

EDIT: samma sak ang. att man trycker +S måste göras med originalkoden:

Kod: Markera allt

${exec ~/rtorrent_rpc/xmlrpc2scgi.py -p /home/jonas/rtorrent_rpc/rpc.socket d.multicall started d.get_name= } 
och

Kod: Markera allt

${exec ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py /home/jonas/rtorrent_rpc/rpc.socket}
Jag har inte märkt det tidigare eftersom jag har haft rtorrent igång och bara startat om Conky.

EDIT2 På ett sett är det inte så dumt för nu kan jag gå in i rtorrent och trycka ctrl + S på de filer jag vill ska visas i conky. Jag har altså mer möjligheter att välja vilka filer jag vill visa. Om IF sattsen som bestämde max antal är igång så är det inga problem heller.
Det enda som stör nu är att rTorrents pid nummer skrivs ut i Conky från den här delen av koden

Kod: Markera allt

 if pidof 'rtorrent'; then
Hela koden:

Kod: Markera allt

 ${exec if pidof 'rtorrent'; then ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py /home/jonas/rtorrent_rpc/rpc.socket;fi }
EDIT3: Jag fick bort pid nummret jag gjorde så här bara if pidof 'rtorrent' > 0; then. Så nu funkar det nog som jag vill hoppas jag :) Nu behövs det bara fler som testar och ser om man hittar nån bug nån stans :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 15:40
av Konservburk
BadOmen skrev:Den verkar sortera det själv då men den sorterar olika om en fil är done eller inte och i bokstavsordning på nåt set och inte i vilken ordning de ligger i rTorrent. Skulle du kunna sortera efter namn, så spelar det inte nån roll hur rTorrent vill sortera? Det spelar ju inte nån roll att inte alla som är Done hamnar efter varandra eftersom man ser det tydligt genom att 100% är klart :)
Jag tänkte att det skulle vara enkelt att sortera, men eftersom det är 5 rader per torrent så kan man ju inte bara sortera radvis rakt av. I dessa fall brukar tricket vara att stoppa in ett nolltecken \0 mellan varje element och sedan pipe:a vidare till sort -z. Men det visade sig att vanliga awk inte kan få ur sig några nolltecken :P

Om du väljer att installera gawk så fungerar det bra, men jag kom även på en liten ful work-around som fungerar med vanliga awk. Jag separerar helt enkelt med backspace \b istället för med nolltecken. Därefter skickar jag vidare alltihop till xargs som får byta ut alla backspace mot nolltecken så att det sen går att använda sort -z. Det borde fungera bra så länge det inte finns några backspace i torrent-namnen. ;D
BadOmen skrev:Skulle du kunna göra ett test om rTorrent är igång innan du skickar det till xmlrpc2scgi.py? Det blir ju felmeddelanden annars när ditt script försöker nå rTorrent via xmlrpc2scgi.py när rTorrent inte är igång :)
BadOmen skrev:Det är bättre att göra kollen i conky nåt typ så här:

Kod: Markera allt

 ${exec if pidof 'rtorrent'; then ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py /home/jonas/rtorrent_rpc/rpc.socket;fi }
Den skriver dock ut rtorrents pid nummer i conky och det vill man ju inte.
Att testa med pidof är inte jättebra. Tänk om du har flera olika rtorrent igång, eller om något annat program råkar heta samma sak, eller om själva rtorrent skulle heta något annat, eller om kommunikationen med rtorrent helt enkelt inte fungerar av någon anledning, osv. Det är betydligt bättre att göra en test mot socket:en istället.

Här är iaf en uppdaterad version (med ett enkelt socket-test):

Kod: Markera allt

#!/bin/sh
test -S "$2" &&
"$@" d.multicall started \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
|
xmlstarlet sel -t -v / |
awk '/./ {
   if (++i%5 == 1) name=$0
   else if (i%5 == 2) up[name]=$0
   else if (i%5 == 3) down[name]=$0
   else if (i%5 == 4) done[name]=$0
   else if (i%5 == 0) size[name]=$0
} END {
   for(name in up) {
      up_sum += up[name]
      down_sum += down[name]
      #if(++j<=4)
      {
         printf("Namn: %s\n", name)
         printf("Klart: %d%%\n", 100 * done[name] / size[name])
         printf("Upp: %.1f kB/s\n", up[name] / 1024)
         printf("Ner: %.1f kB/s\n", down[name] / 1024)
         printf("\n\b")
      }
   }
   printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
   printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}' |
xargs -d'\b' -n1 printf '%s\0' |
sort -z
BadOmen skrev:Det som är konstigt är att när jag startar conky nu så för att få den att visa de filer som rtorrent har så måste jag först gå till rTorrent och trycka ctrl + S för att få dem att visas i conky och det även om filerna redan är igång och laddar i rTorrent. Ska testa lite mer :)
Det låter som att rtorrent inte skickar det den blir ombedd att skicka isf. Man skulle ju kunna säga åt den att alltid rapportera alla torrents och istället sortera bort de stängda i efterhand.

EDIT:
BadOmen skrev:EDIT3: Jag fick bort pid nummret jag gjorde så här bara if pidof 'rtorrent' > 0; then. Så nu funkar det nog som jag vill hoppas jag :) Nu behövs det bara fler som testar och ser om man hittar nån bug nån stans :)
Om du kör med pidof 'rtorrent' > 0 så kommer du få in pid-numret i en fil som heter 0. Det är nog inte riktigt vad du tänkte dig. ;)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 15:50
av BadOmen
Ja, kanske det men det är rätt ok som det är tycker jag. Man får mer valfrihet på det här sättet och med mindre kod :)
Du har kanske märkt att jag har hållit på och editera det inlägget över :) Märkte inte att du la in detta emellan :)

Är vi klar nu eller har du nån anmärkning på min kontroll för att se om rtorrent är igång?
Eller nåt annat kanske?

Annars så om det är ok för dig så lägger jag in dit script i howto också och ändrar HowTo lite. Jag lägger Scriptet inte som en länk för man vet aldrig när den länkade filen försvinner :) Jag lägger alltså bara in koden och säger vad man ska göra med den :) Tror jag tar och kopierar hela min HowTo och lägger den nederst här med de ändringar vi har gjort :) Vad heter du föresten? Jag kan lägga ditt namn vid scripptet eller om du skickar en ny Kod med ditt namn i om du vill :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 15:55
av BadOmen
...
BadOmen skrev:EDIT3: Jag fick bort pid nummret jag gjorde så här bara if pidof 'rtorrent' > 0; then. Så nu funkar det nog som jag vill hoppas jag :) Nu behövs det bara fler som testar och ser om man hittar nån bug nån stans :)


Om du kör med pidof 'rtorrent' > 0 så kommer du få in pid-numret i en fil som heter 0. Det är nog inte riktigt vad du tänkte dig. ;)
Nä... det var det ju inte... :) Jag ville göra en typ sant falskt och om det var sant altså ett pid id större än 0 så skulle resten av koden köras. Jag trodde det var så jag gjort först men när jag fick ut pid nummret i conky så tänkte jag att jag har gjort fel och att jag i stället ska göra >0... Har du några förslag på hur jag ska göra. Resultatet i conky blev bra med >0 :P Men det får ju inte bli nån fil...
!= 0 vad händer då då :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:06
av Konservburk
BadOmen skrev:Nä... det var det ju inte... :) Jag ville göra en typ sant falskt och om det var sant altså ett pid id större än 0 så skulle resten av koden köras. Jag trodde det var så jag gjort först men när jag fick ut pid nummret i conky så tänkte jag att jag har gjort fel och att jag i stället ska göra >0... Har du några förslag på hur jag ska göra. Resultatet i conky blev bra med >0 :P Men det får ju inte bli nån fil...
!= 0 vad händer då då :)
BadOmen skrev:Ja, kanske det men det är rätt ok som det är tycker jag. Man får mer valfrihet på det här sättet och med mindre kod :)
Du har kanske märkt att jag har hållit på och editera det inlägget över :) Märkte inte att du la in detta emellan :)

Är vi klar nu eller har du nån anmärkning på min kontroll för att se om rtorrent är igång?
Eller nåt annat kanske?
Du behöver inte ha med någon kontroll i conky alls längre eftesom jag la till ett test mot socket:en högst upp i skriptet istället. Att jag dessutom tycker att pidof är ett kasst sätt att kontrollera det här på har jag redan föklarat i mitt förra inlägg.
BadOmen skrev:Annars så om det är ok för dig så lägger jag in dit script i howto också och ändrar HowTo lite. Jag lägger Scriptet inte som en länk för man vet aldrig när den länkade filen försvinner :) Jag lägger alltså bara in koden och säger vad man ska göra med den :) Tror jag tar och kopierar hela min HowTo och lägger den nederst här med de ändringar vi har gjort :)
Jag tycker det är bättre om du skapar en helt ny tråd i tips&trix-avdelningen. Du kan ju alltid länka till den här tråden därifrån. På så sätt slipper folk blädda igenom flera sidor innan de hittar rätt inlägg.
BadOmen skrev:Vad heter du föresten? Jag kan lägga ditt namn vid scripptet eller om du skickar en ny Kod med ditt namn i om du vill :)
Nu är det så att jag inte ute efter att få någon slags cred för detta. Jag klarar mig bra ändå.

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:07
av BadOmen
Nu blir det månaga inlägg eftervaranda men det blir så när jag inte läser hela meddelandet av nån anledning :)
Jag tänkte att det skulle vara enkelt att sortera, men eftersom det är 5 rader per torrent så kan man ju inte bara sortera radvis rakt av. I dessa fall brukar tricket vara att stoppa in ett nolltecken \0 mellan varje element och sedan pipe:a vidare till sort -z. Men det visade sig att vanliga awk inte kan få ur sig några nolltecken :P

Om du väljer att installera gawk så fungerar det bra, men jag kom även på en liten ful work-around som fungerar med vanliga awk. Jag separerar helt enkelt med backspace \b istället för med nolltecken. Därefter skickar jag vidare alltihop till xargs som får byta ut alla backspace mot nolltecken så att det sen går att använda sort -z. Det borde fungera bra så länge det inte finns några backspace i torrent-namnen. ;D
Vist jag kan installera gawk i stället jag ser endå ingen skillnad på om jag kör awk i stället för gawk. Jag gör det som är lättast för dig.
Jag kör en apt-get remove awk och sen en apt-get install gawk Det är väll det enda jag måste göra :) Det hade ju varit fint med alfabets ordning :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:11
av Konservburk
BadOmen skrev:Vist jag kan installera gawk i stället jag ser endå ingen skillnad på om jag kör awk i stället för gawk. Jag gör det som är lättast för dig.
Jag kör en apt-get remove awk och sen en apt-get install gawk Det är väll det enda jag måste göra :) Det hade ju varit fint med alfabets ordning :)
Om du litar på att min lilla fullösning att separera med backspace fungerar bra så behöver du inte installera gawk alls.

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:12
av BadOmen
Ditt nya script som du la in en bit upp som jag också lyckades missa funkade jättebra :)

Kod: Markera allt

#!/bin/sh
test -S "$2" &&
"$@" d.multicall started \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
|
xmlstarlet sel -t -v / |
awk '/./ {
   if (++i%5 == 1) name=$0
   else if (i%5 == 2) up[name]=$0
   else if (i%5 == 3) down[name]=$0
   else if (i%5 == 4) done[name]=$0
   else if (i%5 == 0) size[name]=$0
} END {
   for(name in up) {
      up_sum += up[name]
      down_sum += down[name]
      #if(++j<=4)
      {
         printf("Namn: %s\n", name)
         printf("Klart: %d%%\n", 100 * done[name] / size[name])
         printf("Upp: %.1f kB/s\n", up[name] / 1024)
         printf("Ner: %.1f kB/s\n", down[name] / 1024)
         printf("\n\b")
      }
   }
   printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
   printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}' |
xargs -d'\b' -n1 printf '%s\0' |
sort -z

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:15
av BadOmen
Konservburk skrev:
BadOmen skrev:Vist jag kan installera gawk i stället jag ser endå ingen skillnad på om jag kör awk i stället för gawk. Jag gör det som är lättast för dig.
Jag kör en apt-get remove awk och sen en apt-get install gawk Det är väll det enda jag måste göra :) Det hade ju varit fint med alfabets ordning :)
Om du litar på att min lilla fullösning att separera med backspace fungerar bra så behöver du inte installera gawk alls.
Ar det nån nackdel att ha gawk installerat i stället för awk?
Annars är det ju bättre att installera gawk. Andra som vill använda det behöver ju ändå bara installera en sak :)

Jag tvivlar inte på att du kan få det att funka men är det mer "rätt" kodning om man använder gawk så är det ju lika bra att installera det i stället :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:25
av BadOmen
Jag kom på att awk var ju inget som jag installerade utan det var redan installerat men det heter visst mawk. ska jag av installera det i så fall och installera gawk?

Om nån har skrivit ett filnamn med två blankslag i mellan två ord och bestämmer sig för att sudda bort ett blankslag med backspace så blir det ju problem om dit script bygger på backspace. Det hade nog varit bättre med gawk :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:29
av Konservburk
BadOmen skrev:Ar det nån nackdel att ha gawk installerat i stället för awk?
Annars är det ju bättre att installera gawk. Andra som vill använda det behöver ju ändå bara installera en sak :)
BadOmen skrev:Jag kom på att awk var ju inget som jag installerade utan det var redan installerat men det heter visst mawk. ska jag av installera det i så fall och installera gawk?
Man behöver inte välja mellan gawk och awk. Du kan ha båda installerade samtidigt. Det borde räcka med att köra sudo apt-get install gawk. Då kommer det att finnas två kommandon, ett som heter awk och ett annat som heter gawk.
BadOmen skrev:Jag tvivlar inte på att du kan få det att funka men är det mer "rätt" kodning om man använder gawk så är det ju lika bra att installera det i stället :)
Jag är kluven här. Visst är det lite fult att först separera med backspace och sedan byta separator till nolltecken i efterhand. Men å andra sidan behöver man då inte installera gawk, och det är ju en stor fördel att ha så få beroenden som möjligt.
BadOmen skrev:Om nån har skrivit ett filnamn med två blankslag i mellan två ord och bestämmer sig för att sudda bort ett blankslag med backspace så blir det ju problem om dit script bygger på backspace. Det hade nog varit bättre med gawk :)
Sådant ska inte vara några problem eftersom du i det fallet har suddat ett tecken. Det faktiska namnet kommer ju då bara innehålla ett enda mellanslag, inte två mellanslag följt av ett backspace.

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:37
av BadOmen
Konservburk skrev:
BadOmen skrev:Ar det nån nackdel att ha gawk installerat i stället för awk?
Annars är det ju bättre att installera gawk. Andra som vill använda det behöver ju ändå bara installera en sak :)
BadOmen skrev:Jag kom på att awk var ju inget som jag installerade utan det var redan installerat men det heter visst mawk. ska jag av installera det i så fall och installera gawk?
Man behöver inte välja mellan gawk och awk. Du kan ha båda installerade samtidigt. Det borde räcka med att köra sudo apt-get install gawk. Då kommer det att finnas två kommandon, ett som heter awk och ett annat som heter gawk.
Ok då fattar jag :)
Konservburk skrev:
BadOmen skrev:Jag tvivlar inte på att du kan få det att funka men är det mer "rätt" kodning om man använder gawk så är det ju lika bra att installera det i stället :)
Jag är kluven här. Visst är det lite fult att först separera med backspace och sedan byta separator till nolltecken i efterhand. Men å andra sidan behöver man då inte installera gawk, och det är ju en stor fördel att ha så få beroenden som möjligt.
BadOmen skrev:Om nån har skrivit ett filnamn med två blankslag i mellan två ord och bestämmer sig för att sudda bort ett blankslag med backspace så blir det ju problem om dit script bygger på backspace. Det hade nog varit bättre med gawk :)
Sådant ska inte vara några problem eftersom du i det fallet har suddat ett tecken. Det faktiska namnet kommer ju då bara innehålla ett enda mellanslag, inte två mellanslag följt av ett backspace.
Jasså, ja jag var lite osäker på hur det funkade :) Men då låter det bättre att vi gör som du säger och kör med awk och ditt backspace knep :)

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Postat: 08 aug 2008, 16:44
av Konservburk
Här är ett försök med att sortera bort torrents som inte är igång i efterhand istället:

Kod: Markera allt

#!/bin/sh
test -S "$2" &&
"$@" d.multicall default \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
   d.get_state= \
|
xmlstarlet sel -t -v / |
awk '/./ {
   if (++i%6 == 1) name=$0
   else if (i%6 == 2) up[name]=$0
   else if (i%6 == 3) down[name]=$0
   else if (i%6 == 4) done[name]=$0
   else if (i%6 == 5) size[name]=$0
   else if (i%6 == 0) started[name]=$0
} END {
   for(name in up) {
      if(started[name]) {
         up_sum += up[name]
         down_sum += down[name]
         #if(++j<=4)
         {
            printf("Namn: %s\n", name)
            printf("Klart: %d%%\n", 100 * done[name] / size[name])
            printf("Upp: %.1f kB/s\n", up[name] / 1024)
            printf("Ner: %.1f kB/s\n", down[name] / 1024)
            printf("\n\b")
         }
      }
   }
   printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
   printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}' |
xargs -d'\b' -n1 printf '%s\0' |
sort -z