1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

AS+ Shell- FTP Upload

Dieses Thema im Forum "AppleScript" wurde erstellt von Rosi-janni, 14.09.09.

  1. Rosi-janni

    Rosi-janni Rheinischer Winterrambour

    Dabei seit:
    27.02.07
    Beiträge:
    926
    Hallo Leute,

    ich versuche jetzt seit einer geschlagenen Stunde ein paar Files auf einen FTP zu laden. Eigentlich ein Verzeichnis, was er hoch laden soll.
    Nur weiß ich nicht genau wie und mit put -R kommt ein Error, versuche ich es mit dem local Pfad/* kommt wieder einer und joar, das Ganze schaut so aus:
    Code:
    -- Log vorbereiten
    
    try
    	do shell script "mkdir ~/Library/Scripts_folder"
    	set Error1 to "0"
    	--log_event("Das Erstellen des Hausaufgabenordners war erfolgreich") of LogScript
    on error
    	set Error1 to "Folder 'Scripts folder' exists already or failed"
    end try
    set LogDatei1 to ((path to resource "Logger.scpt") as string)
    set LogDatei2 to quoted form of POSIX path of (LogDatei1)
    
    do shell script "cp  " & LogDatei2 & " ~/Library/Scripts_folder/"
    
    
    -- Log file erstellen in ~/Library/Logs/ mit Namen "Backup.log"
    do shell script "touch ~/Library/Logs/Hausaufgaben.log"
    
    delay 2
    
    set LogScript to load script alias ¬
    	((path to library folder from user domain as string) ¬
    		& "Scripts_folder:Logger.scpt")
    
    -- Bis herige Errors abfragen:
    if Error1 is "Move the file Backup to desk failed" then
    	log_event(Error1) of LogScript
    else if Error1 is "" then
    	log_event("Teil1 wurde erfolgreich abgeschlossen") of LogScript
    end if
    
    
    -- Dateien vorbereiten
    try
    	do shell script "mkdir ~/Library/Hausaufgaben/"
    	log_event("Das erstellen des Ordners Hausaufgaben im Library Ordner des aktuellen Nutzers war erfolgreich") of LogScript
    on error
    	log_event("Das erstellen des Ordners Hausaufgaben im Library Ordner des aktuellen Nutzers schlug fehl!") of LogScript
    	display dialog "Das erstellen des Ordners Hausaufgaben im Library Ordner des aktuellen Nutzers schlug fehl!" buttons {"Abbrechen"} with icon stop
    end try
    
    try
    	do shell script "mkdir ~/Library/Hausaufgaben/HTML"
    	log_event("Das erstellen des Ordners HTML im Library Ordner des aktuellen Nutzers war erfolgreich") of LogScript
    on error
    	log_event("Das erstellen des Ordners HMTL im Library Ordner des aktuellen Nutzers schlug fehl!") of LogScript
    	display dialog "Das erstellen des Ordners HTML im Library Ordner des aktuellen Nutzers schlug fehl!" buttons {"Abbrechen"} with icon stop
    end try
    
    
    set HTML_Folder1 to ((path to resource "Start-HTML") as string)
    set HTML_Folder2 to quoted form of POSIX path of (HTML_Folder1)
    
    try
    	do shell script "cp -r " & HTML_Folder2 & "/* ~/Library/Hausaufgaben/HTML/"
    	log_event("Das Kopieren der Dateien aus dem Scriptbundle war erfolgreich") of LogScript
    on error
    	log_event("Das Kopieren der Dateien aus dem Scriptbundle schlug fehl!") of LogScript
    	display dialog "Das Kopieren der Dateien aus dem Scriptbundle schlug fehl!" buttons {"Abbrechen"} with icon stop
    end try
    
    -- HTML Dateien hochladen
    set HTML_Folder to ((path to library folder from user domain) ¬
    	& ("Hausaufgaben:HTML:") as string)
    set HTML_Stuff to ((every item of HTML_Folder) as list)
    
    
    -- FTP Daten abfragen
    
    set server_name to text returned of (display dialog "Bitte die Adresse des FTP-Servers eingeben! Ohne ftp oder http davor!" default answer "example.net")
    log_event(server_name) of LogScript
    set server_name_http to text returned of (display dialog "Bitte den Link zum Webserver angeben! MIT http:// und einem / beenden!" default answer "http://eusers.eu.funpic.de/")
    log_event(server_name_http) of LogScript
    set user_name to text returned of (display dialog "Bitte den FTP-Zugangsnamen für den Server " & server_name & " eingeben." default answer "")
    log_event(user_name) of LogScript
    
    set user_password to text returned of (display dialog "Bitte das FTP-Zugangspasswort für " & user_name & " auf dem FTP-Server " & server_name & " eingeben." default answer "" with hidden answer)
    
    display dialog "Soll das FTP Passwort mit in die Log Datei geschrieben werden? Zum Beheben von Fehlern ist dies nützlich." buttons {"Abbrechen", "Nein", "Ja"}
    
    set DlogResult to result
    if button returned of result = "Nein" then
    	log_event("Der User verweigerte es das Passwort zu sichern.") of LogScript
    else if button returned of result = "Ja" then
    	log_event("FTP Passwort:" & user_password) of LogScript
    end if
    
    try
    	do shell script "HOST='" & server_name & "'
    USER='" & user_name & "'
    PASSWD='" & user_password & "'
    FILE='~/Library/Hausaufgaben/HTML/*'
    ZIEL='/Test/'
    
    ftp -n $HOST <<END_SCRIPT
    quote USER $USER
    quote PASS $PASSWD
    put  $FILE 
    quit
    exit 0
    "
    	log_event("Das Hochladen war erfolgreich") of LogScript
    on error
    	log_event("Das Hochladen schlug fehl!") of LogScript
    	display dialog "Das Hochladen schlug fehl!" buttons {"Abbrechen"} with icon stop
    	
    end try
    
    
    -- Fertige Datei upload Handler
    
    on ftpFileUpload(server_name, path_to_item, ftp_user, ftp_password)
    	set ftp_server to "ftp://ftp." & server_name & "/"
    	set UploadFile to quoted form of POSIX path of (path_to_item)
    	set theScript to "curl -u " & ftp_username & ":" & ftp_password & " -T " & UploadFile & " " & ftp_server
    	do shell script theScript
    end ftpFileUpload
    
    In dieser Version kommt im Eventprotokoll:
    Code:
    do shell script "HOST='SERVER'
    USER='USER'
    PASSWD='PW'
    FILE='~/Library/Hausaufgaben/HTML/*'
    ZIEL='/Test/'
    
    ftp -n $HOST <<END_SCRIPT
    quote USER $USER
    quote PASS $PASSWD
    put  $FILE 
    quit
    exit 0
    "
    		"/Users/JaGaller/Library/Hausaufgaben/HTML/243.png: No such file or directory"
    
    Und hier die Logdatei:
    Code:
    2009-09-14 04:12:48 Das erstellen des Ordners Hausaufgaben im Library Ordner des aktuellen Nutzers war erfolgreich
    2009-09-14 04:12:48 Das erstellen des Ordners HTML im Library Ordner des aktuellen Nutzers war erfolgreich
    2009-09-14 04:12:48 Das Kopieren der Dateien aus dem Scriptbundle war erfolgreich
    2009-09-14 04:12:50 SERVER
    2009-09-14 04:12:51 SERVER
    2009-09-14 04:12:54 USER
    2009-09-14 04:13:01 FTP Passwort:PASSWORT
    2009-09-14 04:13:01 Das Hochladen war erfolgreich
    
    Kann mir wer sagen was das soll?? Bzw. wie läufts?


    Jan!
     
  2. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    [tt]ftp[/tt] ist ein interaktives Tool und damit für Skripte nicht geeignet. Mit [tt]curl -T[/tt] wird daraus ein Einzeiler. Einfach mal in die [tt]man[/tt] page schauen.
    Gruß Pepi
     
  3. Rosi-janni

    Rosi-janni Rheinischer Winterrambour

    Dabei seit:
    27.02.07
    Beiträge:
    926
    Ja okay also ich kann das so nicht machen oder wie?! Das ist relativ blöd, weil ich insgesamt halt Upload und Download im AS brauche..
    Der Upload sollte so laufen:
    Code:
    set i to every item in file_list
    
    -- Alle Dateien hochladen
    
    repeat with i in file_list
    	ftpFileUpload(server_name, path_to_item, ftp_user, ftp_passwor, d)
    end repeat
    
    -- Fertige Datei upload Handler
    
    on ftpFileUpload(server_name, path_to_item, ftp_user, ftp_password)
    	set ftp_server to "ftp://ftp." & server_name & "/"
    	set UploadFile to quoted form of POSIX path of (path_to_item)
    	set theScript to "curl -u " & ftp_username & ":" & ftp_password & " -T " & UploadFile & " " & ftp_server
    	do shell script theScript
    end ftpFileUpload
    
     
  4. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Versuche nicht Dinge krampfhaft per AppleScript zu lösen (repeat with i) die beim [tt]curl[/tt] mit einer simplen RegExp gelöst werden können oder durch Übergabe von mehreren Parametern. Genaugenommen ist [tt]curl[/tt] alles was Du in dem Fall brauchen wirst.
    Gruß Pepi
     
  5. Rosi-janni

    Rosi-janni Rheinischer Winterrambour

    Dabei seit:
    27.02.07
    Beiträge:
    926
    Danke, der Uplaod geht schon mal:
    Code:
    try
    	do shell script "curl -T ~/Library/Hausaufgaben/HTML/* -u " & user_name & ":" & user_password & " ftp://ftp." & server_name & ""
    	log_event("Das Hochladen war erfolgreich") of LogScript
    on error what
    	log_event("Das Hochladen schlug fehl! Fehler:" & what) of LogScript
    	display dialog "Das Hochladen schlug fehl!" & what buttons {"Abbrechen"} with icon stop
    	
    end try
    
     

Diese Seite empfehlen