Ubuntu .sh script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
Hallo,

Ik heb Ubuntu op mijn pc gezet, werkt allemaal prachtig. Ik heb Opera erop gekregen, Teamviewer.
En probeer nu de Opera Content Block list automatisch te updaten zoals ik met windows ook doe.

Een batch file die een php draait op mijn website, en dat bestand naar mijn site kopieert.
En dan via FTP haal ik het bestand op. Het gaat over deze file: http://fanboy.co.nz/adblock/opera/urlfilter.ini
Deze plaatst hij vervolgens ergens in de Opera persoonlijke bestanden.

Ik weet nu dat je een .sh bestand kan maken als gelijkenis van de Batch files in windows.
en ik heb wget [option] [url] gevonden, dus dan hoeft het niet via FTP, maar kan het direct.
Maar ik geen idee hoe dit verder moet.
Want de .sh bestand is nog niet echt een executable, maar een tekstbestand.
En ik krijg "pause" niet werkend.

Heb nu dit:
code:
1
2
Wget -o /home/jeroen/.opera/urlfilter.ini http://fanboy.co.nz/adblock/opera/urlfilter.ini
Wait


Kan iemand mij verder helpen?

Acties:
  • 0 Henk 'm!

  • terabyte
  • Registratie: September 2001
  • Laatst online: 06-07 23:08

terabyte

kan denken als een computer

correcties:

Wget -> wget
-o -> -O
Wait -> sleep 1

waarom moet er een pause komen?

eerste regel van bestand moet zijn:

#!/bin/sh

en als je het bestand opgeslagen hebt bijv als "test.sh"
doe dan:

chmod +x test.sh

om het uitvoerbaar te maken.

je kunt het nu daadwerkelijk uitvoeren met

./test.sh

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Sowieso moet je geen hoofdletters gebruiken waar kleine letters moeten staan. Wget zal je Ubuntu probably niet vinden, maar wget wel.

Verder is een ".sh"-bestand een prima executable, zolang je hem met chmod executable-'rechten' geeft :P Eventjes bovenaan "#!/bin/bash" (zonder "") zetten et voila, het is een prima "batch"-bestand.

En ipv "Wait" kun je "sleep" gebruiken, al weet ik niet precies waar je dat voor nodig hebt?

Acties:
  • 0 Henk 'm!

  • maxjuh
  • Registratie: November 2004
  • Laatst online: 19-03 15:04
Zoals hierboven al gezegd. Geen hoofdletters etc... Maar ik mag aannemen dat je het script elke x minuten of uren wil laten draaien. Doe dit dan niet met sleep in combinatie met bijv. een loop (while), maar roep het script aan via een cronjob.

Bijvoorbeeld elk uur:
code:
1
* 1 * * * wget -O /home/jeroen/.opera/urlfilter.ini http://fanboy.co.nz/adblock/opera/urlfilter.ini


Deze regel moet je dan toevoegen aan de crontab van je user:
crontab -e

[ Voor 37% gewijzigd door maxjuh op 20-05-2010 20:17 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:04

Hero of Time

Moderator LNX

There is only one Legend

Let wel, als het via een cronjob wordt uitgevoerd, moet je er zeker van zijn dat de rechten op het bestand kloppen. Opera kan het niet fijn vinden (geen enkel programma overigens) als het niet in een eigen bestand mag schrijven (jij als gebruiker dus).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Hero Of Time schreef op donderdag 20 mei 2010 @ 20:23:
Let wel, als het via een cronjob wordt uitgevoerd, moet je er zeker van zijn dat de rechten op het bestand kloppen. Opera kan het niet fijn vinden (geen enkel programma overigens) als het niet in een eigen bestand mag schrijven (jij als gebruiker dus).
Whuh?

Als de TS de cronjob gewoon als zijn standaard user-name uitvoert en hij z'n Opera ook onder hetzelfde account draait en het allemaal gewoon in z'n home-directory heeft staan... Wat kan dan in vredesnaam het probleem zijn? 8)7

Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
In het originele bestand stond duidelijk dat je het niet moest wijzigen als opera aan staat. Met een cron job is dit dus niet te doen. Steeds afsluiten e.d.

Oke, hoofdlettergevoelig.

Waarom ik sleep nodig heb? Simpel, om te zien wat hij deed. Aangezien ik nogal wat fouten maak in het begin.
En ik kan hem nu uitvoeren, nog wel een popup wat ik ermee wil doen.
Maar sleep 1 is 1 seconde, is er ook sleep totdat je op een knop drukt?

Hij doet het verder wel:
code:
1
2
3
4
5
6
7
8
9
10
--2010-05-20 20:37:20--  http://fanboy.co.nz/adblock/opera/urlfilter.ini
Resolving fanboy.co.nz... 204.12.198.91
Connecting to fanboy.co.nz|204.12.198.91|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 62719 (61K) [text/plain]
Saving to: `/home/jeroen/.opera/urlfilter.ini'

100%[======================================>] 62.719       119K/s   in 0,5s    

2010-05-20 20:37:21 (119 KB/s) - `/home/jeroen/.opera/urlfilter.ini' saved [62719/62719]

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Je kunt sleep ook argumenten meegeven. Is sleep 30 niet lang genoeg? :P Afsluiten kan altijd nog met Ctrl-C

Maar je voert nu het programma uit door er op te klikken via je GUI ofzo? Waarom start je niet gewoon een terminal en voer je het via daar uit? Dan hoef je ook niet sleep of iets dergelijks te gebruiken om te voorkomen dat de info weggaat. (Ik neem aan dat je dit alleen tijdens het debuggen wil gebruiken?)

[ Voor 108% gewijzigd door Osiris op 20-05-2010 20:41 ]


Acties:
  • 0 Henk 'm!

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Een "read" zonder argumenten wacht gewoon op een toetsaanslag enter. ;)

Edit: alleen enter. Zie ook hieronder :>

[ Voor 30% gewijzigd door u_nix_we_all op 20-05-2010 20:46 ]

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Het commando read werkt ook wel. Dus in plaats van sleep:
read -n 1

Dit lees 1 karakter uit van je toetsenbord en dan sluit hij zichzelf weer.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:04

Hero of Time

Moderator LNX

There is only one Legend

Osiris schreef op donderdag 20 mei 2010 @ 20:25:
[...]

Whuh?

Als de TS de cronjob gewoon als zijn standaard user-name uitvoert en hij z'n Opera ook onder hetzelfde account draait en het allemaal gewoon in z'n home-directory heeft staan... Wat kan dan in vredesnaam het probleem zijn? 8)7
Ik ging er even vanuit dat de cronjob als root zou draaien, of andere gebruiker, maar je kan uiteraard ook instellen om het als een specifieke gebruiker te laten draaien. Even vergeten, gebruik cronjob namelijk zelf niet.


Als de TS later wil zien wat er is gebeurt zonder dat er een terminal open moet of wat dan ook, kan je ook de uitvoer van je commando laten sturen naar een bestand, ipv stdout. Doe dit door '> bestand' (zonder aanhalingstekens) achter je commando te zetten. Om niet telkens het bestand te overschrijven, gebruik je '>> bestand'.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • BrZ
  • Registratie: Maart 2000
  • Laatst online: 19:15

BrZ

maxjuh schreef op donderdag 20 mei 2010 @ 20:05:
Bijvoorbeeld elk uur:
code:
1
* 1 * * * wget -O /home/jeroen/.opera/urlfilter.ini http://fanboy.co.nz/adblock/opera/urlfilter.ini
Ehh, dat is zeg maar niet helemaal elk uur, dat is elke minuut tussen 01:00 en 02:00 ;)

Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
Ja ik klik erop, staat op de desktop namelijk.

En oke, read -n1. Zal het proberen.
Zit nu in windows.

En nee, ik wil altijd zien wat hij heeft gedaan, want dan weet ik wanneer er iets mis gaat. De url anders is ofzo.

Acties:
  • 0 Henk 'm!

  • MartinMeijerink
  • Registratie: Juli 2008
  • Laatst online: 20:51

MartinMeijerink

Computerrorist

Ik zou het zo doen, dit scriptje checkt zelf of opera draait, en als het niet draait wordt het urlfilter geupdatet:
code:
1
2
3
4
5
6
7
8
#!/bin/bash
if ps -e|grep opera >/dev/null;then
  echo Opera draait nog
else
  cd /home/jeroen/.opera/
  wget -N http://fanboy.co.nz/adblock/opera/urlfilter.ini
fi
read -sn1

In regel 2 kijken we dus in de processlist (met ps), met grep check je of opera daar tussen staat, en de uitvoer hiervan vinden we niet interessant, dus die gaat naar de prullenbak (/dev/null).

grep geeft nl. ook een returncode af (0 als er een match was, 1 als er geen match was).

Deze returncode (zie je niks van) wordt door if gebruikt, dus krijgen we wanneer Opera nog draaide de tekst "Opera draait nog" te zien (regel 3).

Als opera dus niet draait (else), dan gaan we met cd naar de map /home/jeroen/.opera, vervolgens halen we met wget het bestand urlfilter.ini binnen, maar alleen als fanboy het bestand geupdatet heeft (daar zorgt -N voor).

in regel 8 heb ik zoals hierboven al werd geadviseerd read gebruikt, maar met de optie s erbij, waardoor de toets die je indrukt niet op het scherm verschijnt.

Je zou deze code vanuit de crontab kunnen aanroepen, zoals hierboven al aangegeven, maar dan gebeurt het op de achtergrond, en merk je er niks van, in linux komt er (in tegenstelling tot windows' taakplanner) geen venstertje voorbij vliegen. Ook moet je regel 8 hierbij dan even achterwege laten.

In je crontab zet je dan:
0 * * * * /volledig/pad/naar/jouwscript.sh

An unbreakable toy is useful to break other toys


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 18:11

Kees

Serveradmin / BOFH / DoC
makkelijkste is het gewoon in een terminal uitvoeren als je wil debuggen.

Overigens wil ik je wel wijzen op 4.2.xii van http://tweakers.net/voorwaarden We helpen je volledig gratis een probleem op te lossen dat ervoor zorgt de site dat jou het probleem helpt op te lossen minder inkomsten heeft. Het enige wat je ervoor hoeft te doen is de reclameuitingen op de site niet weren. Maar dat is blijkbaar teveel gevraagt.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
Wellicht OT:
Daar staat:
4.2 In het bijzonder zal het Lid:
[...]
xii. geen gebruik maken van adblockers of op andere wijze reclame-uitingen weren, anders dan de optie die Tweakers.net het Lid biedt indien hij een betaald abonnement heeft afgesloten.
Ik had altijd begrepen dat dit betrekking heeft op het blokkeren van reclame op tweakers.net zelf. Speciaal vanwege deze regel staat tweakers.net in de whitelist van mijn AdBlockerPlus.

Of betekent het dat ik, om lid te mogen zijn van Tweakers, helemaal geen adblocker in mijn browser mag hebben?

Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
Dat is dan jammer... Want mijn websites zijn supersnel geladen en ze laggen nooit meer bij het scrollen.
Dankzij de Content Blocker van Opera.
Want reclame is de reden dat je een zware pc nodig hebt om wat tekst te laten zien. En dat het mobiel onmogelijk is fijn te browsen.

En dan nog, reclame is een illusie want er klikt nooit iemand op.

En MartinMeijerink, ik zal eens kijken.

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

jeroen3 schreef op vrijdag 21 mei 2010 @ 12:14:
En dan nog, reclame is een illusie want er klikt nooit iemand op.
offtopic:
Dat is niet aan jou om te bepalen. Reclamevrij tweakers kan prima, dan moet je een abonnementje kopen.
5 pilsjes in de kroeg kost het, meer niet ;).

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
BrZ schreef op donderdag 20 mei 2010 @ 23:32:
code:
1
* 1 * * * wget -O /home/jeroen/.opera/urlfilter.ini http://fanboy.co.nz/adblock/opera/urlfilter.ini


Ehh, dat is zeg maar niet helemaal elk uur, dat is elke minuut tussen 01:00 en 02:00 ;)
Ik ben daar (lang geleden) ook eens ingestonken :P . Het lijkt me wel zo aardig om TS ook de oplossing aan te reiken. Dat moet dus zoiets worden als
code:
1
15 * * * * wget -O /home/jeroen/.opera/urlfilter.ini http://fanboy.co.nz/adblock/opera/urlfilter.ini

om het commando om kwart over elk uur te laten uitvoeren.

Verder is de optie '-nv' van wget vast wel handig:
`-nv' `--no-verbose' Turn off verbose without being completely quiet (use `-q' for that), which means that error messages and basic information still get printed.

Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
Als je het niet erg vind heb ik geen idee wat die 15 * * * * betekent...
Maar ik hoef geen cronjob, handmatig is goed genoeg. Zovaak wordt die file niet geupdate.

Het is eigenlijk al lang opgelost.

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Die 15 * * * * betekent: elke 15e minuut van het uur. Dus 00:15, 01:15 et cetera.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
Hoe heet die methode, dan zoek ik even een syntax uitleg.

Acties:
  • 0 Henk 'm!

  • vanaalten
  • Registratie: September 2002
  • Laatst online: 19:22
Crontab dus. Met cron kan je op regelmatige basis acties laten uitvoeren.

Acties:
  • 0 Henk 'm!

  • Dirk
  • Registratie: November 2004
  • Laatst online: 17:27

Dirk

Coördinator frontpagemoderatie
man 5 crontab
Dat is wat jij nodig hebt.

Om te zien hoe je de editer opent eventueel ook nog
man 1 crontab

All statements are true in some sense, false in some sense, meaningless in some sense, true and false in some sense, true and meaningless in some sense, false and meaningless in some sense, and true and false and meaningless in some sense.


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 18:11

Kees

Serveradmin / BOFH / DoC
sam.vimes schreef op vrijdag 21 mei 2010 @ 11:39:
Wellicht OT:

Ik had altijd begrepen dat dit betrekking heeft op het blokkeren van reclame op tweakers.net zelf. Speciaal vanwege deze regel staat tweakers.net in de whitelist van mijn AdBlockerPlus.

Of betekent het dat ik, om lid te mogen zijn van Tweakers, helemaal geen adblocker in mijn browser mag hebben?
Owh nee, het maakt ons weinig uit of je de reclame op andere sites blocked, maar in dit specifieke geval zie ik ook genoeg domeinen langskomen waar onze reclame vandaan komt. Wij hanteren (zeker in tegenstelling tot andere sites) een zeer strict reclame beleid, dat wel iets ruimer wordt afentoe, maar nog steeds redelijk gematigt is iha.

Anyway, als je reclame blocked omdat het te langzaam is, dan zou je een flashblocker kunnen gebruiken, die zijn er genoeg, en dat is de enige manier van reclame zo ongeveer die erg zwaar kan zijn.

De regel die je in de crontab kan zetten is overigens uitgelegt in 'man crontab' . Als je het handmatig wil doen, dan kun je gewoon die regel in een terminal intypen, en eventueel als je hem later nog een keer wil uitvoeren, in je history kijken wat je precies gedaan hebt. Als je gnome hebt, dan zou er een Terminal application onder Applications > Accescoires moeten staan.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:04

Hero of Time

Moderator LNX

There is only one Legend

Om niet een heel nieuw topic te openen voor praktisch hetzelfde onderwerp, stel ik het hier maar even. Wellicht dat de TS er ook mee komt te zitten, al is zijn vraag al beantwoord en werkt het.

Ik heb een script gemaakt om een .deb te installeren via het dpkg commando. Alleen wil ik dat deze pauzeert als hij klaar is, maar krijg dit niet voor elkaar. Om daadwerkelijk een terminal te krijgen (voor invoer van het sudo wachtwoord), gebruik ik xfce4-terminal -x <commando>. Werkt voor het installeren prima, maar ik kan hiermee geen meerdere commando's laten uitvoeren, laat staan een sleep of readline. Ik krijg geen visuele feedback in de terminal van alles wat achter het commando komt (echo, sleep, alles). Doe ik iets verkeerds? Ik denk het namelijk niet. Dit is wat ik gebruik overigens:
code:
1
xfce4-terminal -x sudo dpkg -i $1 ; echo "installatie klaar, controleer op fouten" ; sleep 10

Een read -sn 1 -p "installatie klaar, controleer op fouten" werkt dus ook niet als tweede 'argument' (met of zonder '< /dev/tty'). De help uitvoer van xfce4-terminal geeft alleen maar dit:
-x, --execute .. Execute the remainder of the command line inside the terminal

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
Ik mis de reclame niet echt.

crontab, ik zal eens kijken.
Ja gnome, wel is van gehoord ja.

Wat me vooral opvalt aan Ubuntu is dat alles meteen werkt.
Wifi, Flash plugin, Codec downloads, hd video, software installeren.
Zonder errors, heerlijk.

Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
Weet een van jullie misschien hoe ik de GRUB loader lijst aanpas.

Ik heb via "Opstart manager" wel Windows als Default gezet, maar nu wil ik graag Windows en Ubuntu naast elkaar en de rest eronder.
Maar ik kan dat /boot/grub/menu.lst bestand niet vinden :S

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Losse boot-partitie? Die wel gemount? /boot/grub/grub.conf misschien?

Acties:
  • 0 Henk 'm!

  • DutchNutcase
  • Registratie: Augustus 2005
  • Niet online

DutchNutcase

E = mc^2

jeroen3 schreef op zondag 23 mei 2010 @ 20:17:
Weet een van jullie misschien hoe ik de GRUB loader lijst aanpas.

Ik heb via "Opstart manager" wel Windows als Default gezet, maar nu wil ik graag Windows en Ubuntu naast elkaar en de rest eronder.
Maar ik kan dat /boot/grub/menu.lst bestand niet vinden :S
Als je Ubuntu 10.04 hebt geinstalleerd heb je niet de oude GRUB met /boot/grub/menu.lst, maar GRUB 2 met een andere file structuur. De boot wordt gedaan vanuit /boot/grub/grub.cfg, maar het wordt aangeraden deze niet handmatig te bewerken. Als je er veranderingen in aan wil brengen dan doe je dat in /etc/default/grub en vervolgens voor je uit:
sudo update-grub

Zie voor meer informatie deze pagina.

Luctor et Emergo || specs


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:04

Hero of Time

Moderator LNX

There is only one Legend

De echte volgorde wordt niet via /etc/default/grub gemaakt, maar door de scripts in /etc/grub.d/.

Iemand nog een idee over mijn klein probleempje hierboven? Een tweede commando achter een eerste in hetzelfde terminal scherm krijgen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 18:11

Kees

Serveradmin / BOFH / DoC
jouw terminal(e) probleem is de terminatie van je commando ;)

Een ; zorgt ervoor dat het commando 'klaar' is, en erachter dus een nieuw commando begint. Je terminal zal dus sudo dpkg $i uitvoeren, dan stoppen met de terminal, en doet dan de echo en de sleep, waarbij ik niet zou weten waar de output heengaat.

Er zijn twee mogelijkheden om dat op te lossen; 1 zet de commando's in een script die je vervolgens aanroept als 1 commando, of 2; je enclosed het in " alla: terminal -x "dpkg -i $1; echo 'bla'; sleep 10"

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 18:03
Ik heb het GRUB bestand gevonden.
Maar ik kan daar de volgorde van de lijst niet aanpassen.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:04

Hero of Time

Moderator LNX

There is only one Legend

Kees schreef op maandag 24 mei 2010 @ 11:25:
jouw terminal(e) probleem is de terminatie van je commando ;)

Een ; zorgt ervoor dat het commando 'klaar' is, en erachter dus een nieuw commando begint. Je terminal zal dus sudo dpkg $i uitvoeren, dan stoppen met de terminal, en doet dan de echo en de sleep, waarbij ik niet zou weten waar de output heengaat.

Er zijn twee mogelijkheden om dat op te lossen; 1 zet de commando's in een script die je vervolgens aanroept als 1 commando, of 2; je enclosed het in " alla: terminal -x "dpkg -i $1; echo 'bla'; sleep 10"
Ben bang dat het dus oplossing 1 wordt, aangezien ik 2 al geprobeerd heb en dat niet werkte. Bedankt iig.

@jeroen3,
Misschien iets als dit wat je wilt? http://ubuntuforums.org/showthread.php?t=1282257
Eerst windows, dan Linux normale modus, daarna de recovery en memtest oid?

Commandline FTW | Tweakt met mate

Pagina: 1