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.

Mapp som ftp:ar, går det?

Tråden skapades och har fått 10 svar. Det senaste inlägget skrevs .
1

Går det att ha mappar som begriper att när det läggs något i dom så fungerar dom som om dom vore alias av motsvarande mapp på ftp servern, ja att filöverföringen sker som om dom hade flyttats till en extern disk. Vem vet och hur går man tillväga... jo jag har testat Transmit´s widget och denna lösning är halvbra. Självfallet måste mappen komma ihåg hur den ska agera även efter en omstart.

http://www.yummysoftware.com/ har något åt det hållet.

http://www.yummysoftware.com/features/ftp-watcher är kanske något?

/Thomas

  • Medlem
  • Stockholm
  • 2006-01-12 14:41

Jag gjorde en Folder Action som kör ett Applescript som kör ett shellscript som gör detta. Jag sitter på jobbet nu, men om du är intresserad så kan jag posta koden när jag kommer hem ikväll.

Ursprungligen av macce:

Jag gjorde en Folder Action som kör ett Applescript som kör ett shellscript som gör detta. Jag sitter på jobbet nu, men om du är intresserad så kan jag posta koden när jag kommer hem ikväll.

Tar jag gärna emot. Har provat lite AS till och från men shellscript är jag total novis på så du kanske behöver förklara något där... tack på förhand. Kan scripten modifieras så att bara nya och uppdatera filer/mappar uppdateras på server...?

  • Medlem
  • Stockholm
  • 2006-01-12 14:59
Ursprungligen av Olle@mac:

Kan scripten modifieras så att bara nya och uppdatera filer/mappar uppdateras på server...?

Just nu är det i sin enklaste form, dvs när man lägger en ny fil i mappen så skickas den till en given katalog på ftp-servern. Lägger man en ny kopia i mappen utan att ta bort den gamla händer ingenting. Det går säkert att göra stora förbättringar, men jag har hittills nöjt mig med den grundläggande funktionaliteten. Kanske dags att uppdatera lite...

Jag ska kommentera och förklara koden så gott jag kan.

Ursprungligen av macce:

Jag gjorde en Folder Action som kör ett Applescript som kör ett shellscript som gör detta. Jag sitter på jobbet nu, men om du är intresserad så kan jag posta koden när jag kommer hem ikväll.

Låter intressant. Posta gärna!

  • Medlem
  • International user
  • 2006-01-12 16:49

FTP Folder Action

Ursprungligen av macce:

Jag gjorde en Folder Action som kör ett Applescript som kör ett shellscript som gör detta. Jag sitter på jobbet nu, men om du är intresserad så kan jag posta koden när jag kommer hem ikväll.

Du har alltså gjort det jag en gång försökte göra. Kan du dela med dig av koden här till exempel? Eller på nån site. Skulle gärna kika på koden. Skulle dock vilja ha den så att om man dubbel klickar så skulle en ftp förbindelse till aktuell mapp öppnas hellre än mappen i sig. Men det blir kanske omöjligt med applescript i längden att få finder stil på det hela. Så en kopia av mappen är kanske då helt OK.

Som sagt dela gärna med dig.

AS+Shell löser som sagt det. Har du Stuffit deLuxe så kan du med programmet Stuffit Express PE enkelt göra små droplets som har precis den funktionaliteten. Eller om du så vill går samma sak att göras med Automator +lite tilläggsprogram

  • Medlem
  • Stockholm
  • 2006-01-12 20:32

Här är koden till min ftp-ande mapp och därtill hörande förklaringar.

Observera att ni måste anpassa båda skripten, annars kommer det inte att fungera!

Håll till godo!

Gör så här
Steg 1
Skapa en mapp någonstans, kom ihåg sökvägen och namnet. Mappen är till för att dumpa filerna som ska skickas.

Steg 2
Skapa nu en mapp i din hemkatalog som heter Scripts. Om du redan har en plats där du sparar egna shellscript behöver du inte skapa någon ny mapp.

Steg 3
Skapa shellskriptet. Enklast är att använda någon vanlig editor typ SubEthaEdit eller Smultron, men även TextEdit borde gå bra.
Ändra det som står inom *såna här* (och radera själva stjärnorna) i skriptet enligt följande:
Ändra på rad 5 så att ditt sökvägen till din hemkatalog stämmer.
Ändra på rad 32 och skriv in IP-adress, loginnamn och lösen till den ftp-server du ska ansluta till.
Ändra på rad 39 och skriv in IP-adressen till ftp-servern även här.
Spara skriptet som "ftp_to_server.sh" i mappen Scripts i din hemkatalog.

Steg 4
Skapa Appleskriptet.
Ändra rad 16 så att sökvägen stämmer överens med mappen du skapade i Steg 1. Själva mappnamnet ska inte vara med. (Ex: Om du skapade /Users/Nisse/ftpmapp så ska det stå /Users/Nisse/ (Observera snedstrecket på slutet! ))
Editera också rad 20 så att sökvägen till shellskriptet stämmer med var du sparade det i Steg 3.
Spara skriptet som "add - ftp to server" i /Library/Scripts/Folder Action Scripts.

Steg 5
Bind Appleskriptet som en Folder Action till mappen du skapade i Steg 1. Högerklicka på mappen och välj Attach a Folder Action...
Navigera till /Library/Scripts/Folder Action Scripts och välj ditt skript.

Steg 6
Nu ska det vara klart för provkörning. Kopiera en fil till din mapp och se om vi har gjort rätt.

Appleskript - /Library/Scripts/Folder Action Scripts/add - ftp to server.scpt

-- set the amount of time before dialogs auto-answer.
property dialog_timeout : 30

on adding folder items to this_folder after receiving added_items
	try
		tell application "Finder"
			--get the name of the folder
			set the folder_name to the name of this_folder

			repeat with eachItem in the added_items
				set item_name to name of eachItem
				display dialog "Vill du kopiera " & item_name & " till ftp-servern?" buttons {"Yes", "No"} default button 2
				set the user_choice to the button returned of the result
				
				set the full_path to "/Users/macce/" & folder_name & "/" & item_name
				
				if user_choice is "Yes" then
					set UT to (do shell script "/Users/macce/Scripts/ftp_to_server.sh " & full_path)
					display dialog UT
				end if
			end repeat
		end tell
		
	end try
end adding folder items to

Shellskript - /Users/ditt användarnamn/Scripts/ftp_to_server.sh

#!/bin/bash

FILE_TO_UPLOAD=$*

NETRCFILE=/Users/*macce*/.netrc

# Check for file name as argument, if none then exit
if [ "$1" = "" ]; then
	echo
    echo You should provide me with a file name, cannot continue.
 	echo
	exit
fi

# Check that given file really exists in directory
echo Checking for existance of file $1

if [ -f "$FILE_TO_UPLOAD" ]; then
	echo  OK
else
	echo
    echo File not found in html directory: $1
    echo Check the file name and try again.
    echo
    exit
fi
FILE=`basename "$FILE_TO_UPLOAD"`

# Create the file ~/.netrc for automatic login and execution at ftp server
touch $NETRCFILE
chmod 700 $NETRCFILE
echo machine *ip-adress eller dns-namn* login *loginnamn* password *abc123* > $NETRCFILE
echo macdef init >> $NETRCFILE
echo put \"$FILE_TO_UPLOAD\" \"$FILE\" >> $NETRCFILE
echo bye >> $NETRCFILE
echo >> $NETRCFILE

# Run ftp to connect to the ftp server and upload the file
ftp *ip-address*

# Clean up, do not leave a file around containing login name and password... 
rm $NETRCFILE

exit 0

Förklaring
Appleskriptet körs varje gång man lägger till något i mappen som man bundit skriptet till. Man får en fråga för varje fil man har lagt till, och svarar man Ja så körs shellskriptet en gång. Man får även en svarsdialog som visar resulatet (utseendet på denna varierar beroende på ftp-servern).

Shellskriptet skapar en fil i hemkatalogen (.netrc) som används som manus för ftp-sessionen. Filen innehåller kommandon som ska köras när man loggar in mot en given ftp-server. Om du redan använder en .netrc så måste du ändra i mitt skript!

Disclaimer: Dessa skript används på egen risk. De är testade på min dator och fungerar där, men jag tar inget ansvar om ni kör dem och något går fel.

Givetvis är det fritt fram att modifiera skripten! Lägg gärna förbättringstips här i tråden.

Mitt manus gör något liknade som ovanstående, men förlitar sig på URL Access Scripting istället, ett scripttillägg som skall medfölja OS X.

Mitt manus frågar även efter mapp, användarnamn och lösenord, innan den tar alla filer i mappen och skickar upp dem till den i manuset angivna sökvägen på servern.

Så genom att klippa och klistra mellan manusen i denna tråd bör du kunna få det att fungera som du önskar.

(*
FTP-Upload folder
----------------------------------------------------------------
Av: [email protected], 2005-12-30

Detta manus använder URL Access Scripting för att ladda upp en hel mapp till en FTP-server.

OBS, utan att skapa mappen på servern!

Användaren väljer mapp, anger användarnamn och lösenord och vips skickas den upp.


*)

-- SÄTT DEFAULTS
----------------------------------------------------------------
set defaulthostname to "www.intelligentmammals.se/" -- ends with /
set defaultusername to "xxx"
set defaultpassword to "xxx"
set defaultpath to "intelligentmammals.se/images/" -- ends with /

-- FRÅGA EFTER MAPP, ANVÄNDARNAMN OCH LÖSENORD
----------------------------------------------------------------
tell application "Finder"
	-- Välj mapp
	choose folder with prompt "Välj en mapp att ladda upp via FTP"
	set myFolder to the result
	
	-- Fråga efter användarnamn
	display dialog "Användarnamn?" default answer defaultusername buttons {"Avbryt", "Ok"} default button "Ok"
	set returnedbuttonandtext to the result
	if button returned of returnedbuttonandtext is "Avbryt" then
		quit
	end if
	set defaultusername to text returned of returnedbuttonandtext
	
	-- Fråga efter lösenord
	display dialog "Lösenord?" default answer defaultpassword buttons {"Avbryt", "Ok"} default button "Ok"
	set returnedbuttonandtext to the result
	if button returned of returnedbuttonandtext is "Avbryt" then
		quit
	end if
	set defaultpassword to text returned of returnedbuttonandtext
end tell

-- SÄTT IHOP INFORMATIONEN TILL EN KOMPLETT URL
----------------------------------------------------------------
set servername to "ftp://" & defaultusername & ":" & defaultpassword & "@" & defaulthostname & defaultpath

-- LADDA UPP FILEN
----------------------------------------------------------------
tell application "Finder"
	activate
	set upload_Folder to myFolder as alias
	set allitems to every item in upload_Folder
	repeat with listItem in allitems
		set fileToUpload to listItem as file specification
		set servername to "ftp://" & defaultusername & ":" & defaultpassword & "@" & defaulthostname & defaultpath
		tell application "URL Access Scripting"
			activate
			upload fileToUpload to servername replacing yes with progress without binhexing
		end tell
	end repeat
end tell
  • Medlem
  • Tyresö
  • 2006-01-13 18:28

Halloj..

Jag är helt grön på Automator och Applescripts.. men hittade denna http://editkid.com/upload_to_ftp/

Installera och kör sen "Upload to dropbox.workflow" som ligger i exempel mappen och mata in dina ftp uppgifter sant ta bort steg 3. och spara.. kör sen "spara som" och välj program.. och till skrivbordet.. sen släpper du bara det du vill ftpa på den ikonen.. allt sker i bakgrunden.. smidigt och skoj

Lycka till

1
Bevaka tråden