Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

AppleScript för att ftp:a till webserver?

Tråden skapades och har fått 22 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Höganäs
  • 2003-04-29 01:08

Jag skulle, via AppleScript (FolderActions) göra så att en fil laddas upp till min webserver.
Är det möjligt?
Hur ser då ett sådant script ut?

(Scriptet ska dessutom generar en websida med en länk till min dators IP-nummer, som tilldelas mig dynamiskt. Denna del har jag dock lyckats fixa (:) )
/M

Det finns en Addition som heter "URL Access Scripting". Den fixar det du vill göra.

Från ordlistan:
upload: upload the file to the URL.
upload file specification -- the file to upload
to string -- the URL of the receiving server
[replacing yes/no] -- whether to replace an existing file (default: no)
[progress boolean] -- whether to display a modal progress dialog (default: false)
[binhexing boolean] -- whether to binhex before uploading or not (default: true)
[upload directory boolean] -- upload as an entire directory (default: false)
[authentication boolean] -- show authentication dialog (default: false)
[Result: boolean]

Dvs, säg att variabeln "theFile" är en sträng som är sökväg till en fil.

set theServer to "ftp://mittLogin:[email protected]"
tell application "URL Access Scripting"
		upload file theFile to theServer replacing yes
	end tell

som du ser anger jag servern som en sträng, som innehåller adress till ftp servern + login och lösen. Ev kan du skippa login och lösen beroende på servern.

  • Medlem
  • Höganäs
  • 2003-04-29 11:16

Tack!
Ska testa detta senare. Sitter tydligen bakom en brandvägg just nu, för Transmit kan inte logga in på min ftp, så därför funkar nog inte scriptet heller.
Återkommer...

Fattar inget men behöver ett också.

Jag vill att man skall kunna kompilera scriptet och att man skall kunna släppa en fil på dess ikon och utan frågor eller annat tjafs skall filen laddas upp...

Förstår inte i ovanstående script var theFile definieras, är rudis på AS, men jag antar att ovanstående inte kan stå stand alone?

  • Medlem
  • Höganäs
  • 2003-04-30 03:17

Så här långt har jag kommit, dock funkar det inte med uppladdningen, ännu

Edit: Det gör den visst!

set myip to ¬
	do shell script "ifconfig | grep 'broadcast' | awk '{print $2}'"

tell application "BBEdit"
	activate
	make new text window with properties ¬
		{contents:"<HTML><BODY><P><a href=\"" & "http://" 
& myip & "\">Dynamisk IP</a>
</HTML></BODY>", source language:"HTML"}
	save text window 1 to file "Users:username:Desktop:dynIP.html"
end tell

set theFile to "Users:username:Desktop:dynIP.html"
set theServer to "ftp://USER:PW@ftp.bredband.net"

tell application "URL Access Scripting"
	upload file theFile to theServer replacing yes
end tell

(Texten innanför { och } har jag radbrytit, för att inlägget inte ska bli så brett. )

Tar tacksamt emot fler tips...

Senast redigerat 2003-04-30 03:27

Exempel på ett script som promenerar igenom alla mappar/filer man släpper på det och gör något med varje fil:

(*
UNLOCK ITEMS DROPPED ON IT
----------------------------------------------------------------
Av: Intelligent Mammals HB, 2002-10-14
Ola@intelligentmammals.se
http://www.intelligentmammals.se/

Detta manus låser upp alla filer som finns i de filer/mappar
man släpper på det eller som finns i den mapp man pekar
på. Det fungerar alltså både genom "drag and drop" och
genom att man dubbelklickar på det.

*)

(*
Om vi har släppt en massa filer och mappar på en
applet vi skapat av detta script så finns dem i
variabeln "fileList" som är av typen lista.
Denna variabel skickar vi till rutinen parseFiles.
*)
on open fileList
parseFiles(fileList) of me
end open

(*
Om vi har dubbelklickat på en applet av detta script
så får vi här istället upp en dialogruta för att välja
en mapp. När vi gjort det så finns en folder i variabeln
theFolderToParse. Vi skickar den mappen till rutinen
parseFolder.
*)
on run
choose folder
set theFolderToParse to the result
parseFolder(theFolderToParse)
end run

(*
Här tar vi ett objekt i taget och först kollar vi
om det är en mapp och om det är det så skickar vi
mappen till parseFolder. Annars är det en fil och
då låser vi upp den.
*)
on parseFiles(fileList)
tell application "Finder"
repeat with listItems in fileList
(*
Här kollar vi om objektet är en mapp
i så fall skickar vi det till en subrutin
för att få en lista på filer och mappar i
objektet.
*)
if kind of listItems is "mapp" then
set theFolderToParse to listItems
parseFolder(theFolderToParse) of me
else
(*
Här låser vi upp filen.
*)
set itemToUnlock to listItems
set locked of listItems to false
end if
end repeat
end tell
end parseFiles

(*
Kommer vi hit så har scriptet hittat en mapp. I så fall
så tar vi alla objekt i den mappen och skickar dessa
till parseFiles.
*)
on parseFolder(theFolderToParse)
tell application "Finder"
set newFileList to the items of theFolderToParse
parseFiles(newFileList) of me
end tell
end parseFolder

(*För att spara detta som en applet, dvs ett fristående program, så väljer du "Arkiv:Spara som" och under format väljer du "Program". Men spara först*)

Lycka till!

/Ola

Ett exempel på ett Applescript som reagerar på att man lagt saker i en mapp. För att knyta det till en mapp så gör du så här: Markera mappen, CTRL-klicka på den, välj det som heter något i stil med "Mappkommando", peka på den sparade filen med ditt script. Hittar inte hur man gör detta i Mac OS X, men det var så jag brukade göra i Mac OS 9.

on adding folder items to this_folder after receiving added_items
tell application "Finder"
activate
set the item_count to the number of items ¬
in the added_items
set the folder_name to the name of this_folder
say ("Hey, " & (item_count as text) & ¬
" items have been added to the [[emph -]] folder " & ¬
the folder_name)
end tell
end adding folder items to

  • Medlem
  • Höganäs
  • 2003-04-30 07:54
Citat:

Skrevs ursprungligen av Taz_1999
...Hittar inte hur man gör detta i Mac OS X, men det ....

kika här!, där det beskrivs av Mattias!

Jag vill fortfarande ha ett script som jag kan droppa något på och detta skall laddas upp till webbserver....

Citat:

Skrevs ursprungligen av scooterbabe
Jag vill fortfarande ha ett script som jag kan droppa något på och detta skall laddas upp till webbserver....

Du menar ett sånthär?

--Gör en Droplet och läs in allt som droppas i "theFiles" som en lista
on open theFiles
	
	--Din server path med login och lösen.
	--Kan vara en bra ide att ändra detta...
	set theServer to "ftp://login:lö[email protected]"
	
	-- Kör en loop där "aFile" tilldelas ett värde i listan "theFilea" tills listan är slut
	repeat with aFile in theFiles
		--Gör om "aFile" till string från alias
		set aFile to aFile as string
		
		--Säg åt URL Access Scripting att ladda upp min fil till
		--servern och ersätta ev. redan existerande filer
		tell application "URL Access Scripting"
			upload file aFile to theServer replacing yes
		end tell
	end repeat
	
end open

Kopiera och klistra in i Manusredigeraren, ändra serverpath och spara som program.

Ser ut som vad jag söker vid första anblicken men vad anger jag var i filhierarkin det skall placeras?

Och hur sparar jag det så att det är möjligt att släppa en fil på det utan att Classic startas? Jag har självklart inte kryssat i rutan Öppna med Classic när jag sparar

Citat:

Skrevs ursprungligen av scooterbabe
Ser ut som vad jag söker vid första anblicken men vad anger jag var i filhierarkin det skall placeras?

Jag letade efter exakt samma sak när FTP stöd i FInder var nytt, för att kunna lägga upp fula/roliga bilder på min FTP

Var i filheirakin?
Du menar, om du släpper flera filer som ska hamna på olika ställen eller?

Du frågade efter ett script som laddade upp filer till FTP och det gör detta. Om du menar att du vill ha ett script som laddar upp innehåll i en hel mapp (med dessundermappar) så får du kika på de intelligenta däggdjurens script.

Jag vet inte så mycket om din dator, men att Classic startas kan bero på att du a) inte har "URL Access..." för OS X, eller att du b) använder Manusredigeraren för classic eller att c) din dator valt Classic "URL access scripting" i stället för OS X versionen.

Gör såhär, byt ut "URL Access Scripting" mot nån blahablaha text "hejhopp". Försök kompilera scriptet... då kommer manusredigeraren be dig leta upp "hejhopp", men du väljer naturligtvis "URL Access Scripting" i stället - lämpligtvis OS X versionen...

Citat:

Skrevs ursprungligen av Mattias Jonsson
Var i filheirakin?

Jag vet inte så mycket om din dator, men att Classic startas kan bero på att du a) inte har "URL Access..." för OS X, eller att du

På fråga 1 menar jag om jag vill filen skall hamna i ~/Sites/blabla och antagligen har jag inte urlacces för X, jag har inte själv installerat det i alla fall - var hittar jag det?

svar på fråga 1... antingen kan du ange det i din "path" till ftp servern, eller så sätter du upp ftp servern på det viset att när du loggar in som en viss användare så kommer du direkt till "rätt" mapp. Har inget bättre svar än så.

URL access skall ligga i System/Bibliotek/ScriptingAdditions/
Bifogar en *.sit.

Citat:

Skrevs ursprungligen av Mattias Jonsson
svar på fråga 1... antingen kan du ange det i din "path" till ftp servern, eller så sätter du upp ftp servern på det viset att när du loggar in som en viss användare så kommer du direkt till "rätt" mapp. Har inget bättre svar än så.

URL access skall ligga i System/Bibliotek/ScriptingAdditions/
Bifogar en *.sit.

Har lagt till den men den väljer fortfarande classic-versionen. Testade att stava fel och kontrollera syntax och då fanns det tre URL Access varvid en av dessa är classic-program. Jag har testat med båda de andra två men classic öppnas oavsett vilket...

Vad göra?

Släng alternativ packa ihop classic-versionen?

/Ola

  • Oregistrerad
  • 2003-05-01 16:40

Har prövat detta script nu, fungerar bra med html filer. Men när jag ska köra en .css fil mot servern så pajar det helt sjukt.

Kan fortfarande inte få det att fungera - får problem trots att classicversionen är snyggt bortpackad...

  • Medlem
  • 2011-02-24 13:12

När jag laddar upp en bild med "URL Access Scripting" packas den till en .hqx. Hur undviker man det?

  • Medlem
  • Stockholm
  • 2011-02-24 16:33
Ursprungligen av Baron:

När jag laddar upp en bild med "URL Access Scripting" packas den till en .hqx. Hur undviker man det?

Sjysst "tråd-bump"… efter snart 8 år…

- Torkel

Bäst, genom att inte använda URL Access Scripting, använd cURL istället

1
Bevaka tråden