hernil Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Er ute etter et program som kjører i bakgrunnen, det skal hvert 10 minutt eller så (gjerne konfigurerbart) sjekke om en fil ligger på nettet (type www.eksempel.com/filen.html) og utifra det utføre en helt standard ledetekstkommando (den kan være "statisk" eller bare starte en fil hvis det er enklere). Tenkte det var like greit å spørre her da min googling ikke har gitt meg svar på dette (er et såpass spesifikt spørsmål at det ikke er sikkert dette finnes). Lurte derfor på om noen kunne ta seg bryet med å kode dette? Hvis noen vil ha hele bakgrunnhistorien til dette så er det bare å spørre, ellers er det bare å spørre hvis det er noe som er uklart. Lenke til kommentar
teflonpanne Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 (endret) Du kan lage et bash-script f.eks som cron kjører hvert 10 minutt: #!/bin/bash if wget --spider -S www.minurl.no/fil.html 2>&1 | grep -q "HTTP/1.1 200 OK" then foo else bar fi 'foo' er kommandoen som blir kjørt hvis filen fins, 'bar' hvis ikke. Hvis du bruker windows kan du laste ned cygwin for å få bash, wget og grep og det fins cron for windows også hvis det ikke er en enklere måte å gjøre det på. Hvis du kaller scriptet script.sh f.eks putter du dette i cron-fila: /10 * * * * user /path/to/script.sh hvor user er brukernavnet ditt (eller root). Endret 10. oktober 2008 av teflonpanne Lenke til kommentar
hernil Skrevet 10. oktober 2008 Forfatter Del Skrevet 10. oktober 2008 Kjører Windows ja. Er da et bash-script den beste måten å gjøre det på? Lenke til kommentar
teflonpanne Skrevet 10. oktober 2008 Del Skrevet 10. oktober 2008 Okay, du sa ikke hvilket os du brukte, så jeg bare skrev det enkleste jeg kom på Om det er den beste vet jeg ikke, men det er enkelt ihvertfall, bare en if-test. Hvis du ikke vil bruke cygwin og sånn så vet jeg ikke om det går an med windows' batch-script, så det er mulig du må programmere noe. Men det er ikke veldig vanskelig eller mye med perl/php/python og curl-biblioteket f.eks. Men det må du nesten spørre noen windowsfolk om. Lenke til kommentar
hernil Skrevet 10. oktober 2008 Forfatter Del Skrevet 10. oktober 2008 (endret) Min feil at jeg ikke nevnte OS. Batch kan såvidt meg bekjent ikke se etter filer på nettet (i hvert fall ikke med vanlig if kommando) så det spørs om jeg ikke skal lage en post i python delen av forumet (har fått det for meg at python er veldig lettvint etter å ha lest xkcd :!: ), eller bør jeg kanskje legge det et annet sted? Takker for svar. Endret 10. oktober 2008 av hernil Lenke til kommentar
teflonpanne Skrevet 10. oktober 2008 Del Skrevet 10. oktober 2008 Python- eller windowsdelen er sikkert greit å spørre. Eller kanskje noen windowsfolk svarer her. Eller så kan du bare installere cygwin fra www.cygwin.org og bruke det jeg skrev. Det er veldig praktisk å ha cygwin hvis du trenger sånne småscript av og til. Lenke til kommentar
cyclo Skrevet 11. oktober 2008 Del Skrevet 11. oktober 2008 Tråden er flyttet på forespørsel fra trådstarter. (Som vanlig skal ikke denne posten kommenteres, send evt. en PM) Lenke til kommentar
GeirGrusom Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 (endret) Jeg mekket en i .NET som gjør dette Jeg har testet at det fungerer i Linux også hvis det noensinne blir aktuelt. Temmelig simpelt første parameter må være tid, du spesifiserer hvor lang tid ved et postfix, som kan være s, m, h og d. dersom ingen er spesifisert, vil den gå utifra at du mener sekunder. Andre parameter er kilde-URL Tredje parameter er valgfritt og er der filen skal lagres (enten mappe eller filnavn) hvis ingenting spesifiseres, så bruker den CD eks. dnsched 10m https://www.diskusjon.no/uploads/av-31659.gif C:\ Jeg laget en egen tråd istedet for å bruke timer, men ser i ettertid at det var unødvendig. Anyways, gidder ikke endre på det. Programmet ligger i bin/Release dnsched.zip Endret 18. oktober 2008 av GeirGrusom Lenke til kommentar
hernil Skrevet 18. oktober 2008 Forfatter Del Skrevet 18. oktober 2008 Hei. Takker så mye for at du gidde rå hjelpe. Er første gangen jeg er borti .NET så er litt usikker på hvordan dette skal gjøres. Antar parametrene ligger i main.cs fila? Gidder du å vise meg hvordan fila skulle sett ut hvis den hvert 20 minutt skulle se etter fila som ligger på www.hernil.com/fil.html og starte fila C:\hernil.bat? Det hadde hjulpet meg godt i gang. Går forresten utifra at .exe fila skal legges i oppstart hvis jeg vil at den skal kjøre hele tiden? Nok en gang takk for hjelp! Lenke til kommentar
GeirGrusom Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 Ok, måtte bare legge til muligheten for å starte et program dnsched 20m www.hernil.com/fil.html -e:C:\hernil.bat Du kan eventuelt lage en bat fil som starter pogrammet ved oppstart eller whatnot. Det kan være hendig å spesifisere hvor du legger fil.html hvis andre programmer skal bruke det, ellers bruker den der hvor commandlinen starter dnsched 20m www.hernil.com/fil.html C:\temp -e:C:\hernil.bat dnsched.zip Lenke til kommentar
GeirGrusom Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 Ser nå at programmet gjør noe annet en du ville skal endre det sånn at det går an å få den til bare sjekke 2 minutter Lenke til kommentar
GeirGrusom Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 (endret) Sånn! Legg til -c på slutten, så vil den ikke laste ned fila, men istedet bare sjekke om den finnes Kjapp overgang over hva den gjør: Du spesifiserer et visst intervall den skal utføre dette på og ved det intervallet laster den ned, eller sjekker om en fil eksisterer, og dersom den gjør det, så utføres eventuelt en fil. Dersom fila ikke eksisterer, fortsetter programmet som vanlig. Programmet avsluttes med Ctrl+C (ihvertfall på min linux maskin) dnsched 20m www.hernil.com/fil.html -e:C:\hernil.bat -c dnsched.zip Endret 18. oktober 2008 av GeirGrusom Lenke til kommentar
hernil Skrevet 18. oktober 2008 Forfatter Del Skrevet 18. oktober 2008 (endret) Takk, men hvordan starter jeg herligheten? Hvis jeg vil sjekke hvert 20 minutt om fila www.hernil.com/fil.html finnes, hvis den gjør det så skal den starte fila hernil.bat, hvor skal dette konfigureres? Er sikkert jeg som ikke skjønner. Endret 18. oktober 2008 av hernil Lenke til kommentar
GeirGrusom Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 (endret) Det første parameteret sier hvor langt intervallet er 20 = 20 sekunder 20s = 20 sekunder 20m = 20 minutter 20h = 20 timer 20d = 20 dager Det andre parameteret er filen som skal hentes, og deretter et parameter som begynner med -e: som deretter etterfølges tett av filen som eventuelt skal utføres. -c forteller den at den ikke skal laste ned noenting, bare sjekke om fila finnes. Lag en bat fil eller noe i startup mappe e.l. Programfila finner du som sagt i bin\Release Endret 18. oktober 2008 av GeirGrusom Lenke til kommentar
GeirGrusom Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 Ok, jeg laget et annet program som krever litt mer konfigurering. Det eneste programmet gjør, er å laste ned en fil eller sjekker om den er der, og returnerer 0 dersom fila eksisterer på serveren, og 1 dersom den ikke gjør det. Da kan en bruke IF ERRORLEVEL i batchscript for å sjekke resultatet, og utføre handling deretter. Men dette må legges i et batch script som kjøres av Windows Scheduler e.l. Hvis det skal gjøres av et program, skal det første programmet jeg laget fikse biffen, men dette er kanskje mer alvendelig. webdn.zip Lenke til kommentar
backup Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 Bare for moro skyld sån på 1 2 3, mekka et lite demo vbs-script som svarer til jobben. Det sjekkes om index.html på vg eksisterer. Kjør scriptet for å se hvordan det fungerer. Endre så i URL-variabelen index.html til for eksempel index1.html og kjør scriptet. Scriptet stoppes ved å avslutte wscript.exe i task managers prosessvindu. Set WshShell = WScript.CreateObject("WScript.Shell") On Error Resume Next URL = "http://www.vg.no/index.html" 'siden som skal sjekkes Do wscript.sleep 10000 'hvert 10. sekund Set HTTP = CreateObject("MSXML2.XMLHTTP") HTTP.Open "GET",URL,FALSE HTTP.Send If HTTP.statusText ="OK" Then 'Sett inn det som skal gjøres MsgBox("Er tilgjengelig") 'ta denne vekk f.eks. 'WshShell.run ("Notepad.exe") 'starter notepad som eksempel Else 'Det som eventuelt skal gjøres hvis ikke tilgjengelig MsgBox("Er ikke tilgjengelig") 'ta denne vekk f.eks. End If loop Lenke til kommentar
hernil Skrevet 18. oktober 2008 Forfatter Del Skrevet 18. oktober 2008 Fikk det endelig til å funke, hadde ikke fått med meg at det var start parametere det var snakk om. Det ser ut til å funke bra, eneste jeg vil nå er at programmet skal kjøre i bakgrunnen, altså uten noen som helst form for vindu. Går det an? Skal se om vbs scriptet også kan gjøre det jeg er ute etter. Lenke til kommentar
GeirGrusom Skrevet 18. oktober 2008 Del Skrevet 18. oktober 2008 Ok, skal fint fikses å fjerne vinduet, men da må prosessen drepes når du er lei av den Da er den uten console vindu dnschedng.exe, den vanlige er den andre, og programmet som bare laster ned en gang (som du kan bruke med batch script) er webdn.exe Har fikset noen bugs og slikt. dn_no_gui.zip Lenke til kommentar
hernil Skrevet 18. oktober 2008 Forfatter Del Skrevet 18. oktober 2008 Det funka. Den gjør det jeg er ute etter. Eneste jeg kan sette fingeren på er at like etter at den har startet fila får jeg en melding om at programmet måtte avsluttes. Det er ikke noe egentlig problem til det jeg skal bruke den til, men hvis du har lyst til å bruke enda mer av lørdagen din til å se på det så vet du ihvertfall om det. Tusen takk for hjelp. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå