[GastForen Betriebsysteme und Dienste HELIOS Scriptprobleme - Woher kommt der Name???

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Scriptprobleme - Woher kommt der Name???

McGregor
Beiträge gesamt: 5

24. Feb 2005, 14:10
Beitrag # 1 von 12
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi!

Auch wenn das schon einige mal diskutiert wurde, aber ich bräucht Hilfe bei einem Script. Und das ganze auch noch für lau ...
Also. Bei unserem Workflow legen die Mitarbeiter ihre PDF's in einen überwachten Ordner. Die Dateinamen lauten aber *.pdf.pdf oder *.ps.pdf oder *.prn.pdf
Das sieht doof aus, deswegen will ich für diesen überwachten Ordner ein Script laufen lassen, daß mir die eingehenden Dateien umbenennt (und zwar in *.pdf). Soweit so gut.
Ich habe mir nun ein Script in der Shell zusammengebastelt, welches diese Aufgabe erledigt.
Es lautet:
for i in *.p[snrd]*.pdf; do name=$(echo $i | cut -f1 -d"."); mv $i "$name".pdf; done

Also nichts dramatisches. Nun wollte ich das per EtherShareAdmin einbinden und dann fingen die Probleme an.
1. Muss ich alle Dateien des Ordners durchforsten? Sicher nicht, da laut Doku auch alle Unterverzeichnisse überwacht werden. Aber woher bekomme ich dann die aktuelle Datei und den aktuellen Pfad, wenn ich nicht über 'ls' arbeiten soll? Da muss es doch eine ENV-Variable geben, oder werden die Daten irgendwie per Parameter weitergegeben?
2. Reicht es wenn ich mit diesem Script auch die Datei im Verzeichnis .rsrc ändere, oder muss ich noch irgendwo anders Änderungen vornehmen, damit alles konsitent bleibt?

Vielleicht kann mir jemand einen Tipp geben.
Danke
Jens

P.S. Ich bin absoluter Shell-Script-Newbie und habe von PEARL keine Ahnung :-) - Ideale Voraussetzungen für diese Aufgabe.

(Dieser Beitrag wurde von McGregor am 24. Feb 2005, 14:12 geändert)
X

Scriptprobleme - Woher kommt der Name???

Thomas Kaiser
  
Beiträge gesamt: 1299

24. Feb 2005, 16:08
Beitrag # 2 von 12
Beitrag ID: #147871
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Jens,

> name=$(echo $i | cut -f1 -d".")

Vorsicht.

1) Bei dieser Definition des neuen Namens (Abschneiden nach dem ersten ".") wird aus "1. Advent.ps.pdf" dann ein "1.pdf" -- schon klar, oder? Wenn Du dann noch drandenkst, daß Dir der scriptsrv die Dateinamen mit einem kompletten Pfad übergibt, dann kann einem schon fast schlecht werden: Aus "/mein/1. pfad/mein.ps.pdf" wird dadurch "/mein/1.pdf"... Das kann böse ins Auge gehen. Darum sollte man Skripte auch nie gleich scharfschalten sondern erstmal nur die Ausgaben in die scriptsrv Logdatei protokollieren lassen. Alles andere ist ein ziemlicher Blindflug mit riskanten Folgen...

2) Dateinamen können auch Leerzeichen enthalten. Also benötigt man entsprechende Vorkehrungen, damit nicht aus einem Namen "Test Datei" auf einmal zwei werden (da Leerzeichen in der Shell ein Variablentrenner sind). D.h. man muß alle Variablen permanent in Anführungszeichen setzen! Ansonsten kannst Du Dir problemlos riesige Probleme einhandeln!

Zur Funktionsweise des scriptsrv an sich: der Scriptserver überwacht, wie Du schon treffend bemerkt hast, ganze Ordnerhierarchien ausgehend von dem in ES Admin angegebenen Verzeichnis.

Schlägt eine neue Datei auf, so wird das Skript ausgeführt. Das Skript bekommt den Pfad zu der Datei als Parameter übergeben. Zus. kannst Du mittels der "scriptsrv.conf" auch noch sog. Umgebungsvariablen übergeben (aber das führt jetzt zu weit). Das alles ist aber auch in der Doku zum scriptsrv aufgeführt. Warum liest eigentlich niemand die Doku?

Zum Handling der Dateien an sich: Du fragst, ob Du die Datei im .rsrc-Ordner ebenfalls anfassen sollst. Laß am Besten komplett die Hände von der Unix-Seite bis Du Dir die EtherShare-Doku durchgelesen hast! Denn Du darfst keinesfalls da mit irgendwelchen Befehlen rumfummeln, solange Dir nicht klar ist, wie EtherShare Unix- und Mac-Welt verheiratet (also Dateien im .rsrc-Unterordner und die sog. "Desktop Database" je Volume). Oberste Regel ist: IMMER die Desktop Utilities verwenden! Hintergründiges dazu bspw. hier:

     http://www.kaiser-edv.de/...ation-in-shares.html

Für die Vertiefung des Ganzen ist es aber unbedingt notwendig, daß Du die Doku von Helios durchliest. Sonst kommt erst der Server und dann hoffentlich Du in Teufels Küche :-)

Zum Skript zurück:

Dein Skript bekommt also den Pfad zur Datei als $1 übergeben und soll einen neuen Namen herausfinden:

     #!/bin/sh
     MyFile="$1"
     MyNewName="$(echo "${MyFile}" | sed 's/\.[a-z]*\.pdf$/.pdf/g')"

Dann *muß* es mit den Desktop Utilities arbeiten, d.h. herausfinden, wo die Helios-Installation liegt und ob die Annahme stimmt. Falls nicht, Abbruch

     read HELIOSDIR </etc/HELIOSInstallPath
     test -x "${HELIOSDIR}"/bin/dt || (echo "Kann DT nicht finden" >&2; exit 1)

Und falls alles paßt, dann eben die Datei umbenennen:

     "${HELIOSDIR}"/bin/dt mv "${MyFile}" "${MyNewName}"

Fertig. Zum Thema: "Skripte für lau"... Das ist möglich, aber es setzt voraus, daß Du eine Menge Zeit einbringst. Die Zeit, die Doku zu lesen, die Zeit, Dir Skripting beizubringen. Da wird der Dienstleister günstiger kommen, wenn Du nicht eh vorhast, Dir das Arbeitsleben mit bisserl Skripting zu erleichtern ;-)

Gruss,

Thomas
--
http://kaiser-edv.de/news/


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

McGregor
Beiträge gesamt: 5

24. Feb 2005, 16:32
Beitrag # 3 von 12
Beitrag ID: #147880
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas!

Danke für die ausführliche Antwort.
Du hast da ein paar Themen angesprochen, die wirklich bedenklich sind. Aber das war mir teilweise auch schon aufgefallen. Natürlich hatte ich mein Urscript mittlerweile abgeändert. So verwende ich nun auch die Desktop Utilities. Ich habe wohl etwas früh meine Frage gestellt ;-)

Das Scripting interessiert mich sehr, daher habe ich einige Sachen gelesen, doch wohl leider nur "überflogen". Ich führ's mich nochmal zu Gemüte. Weiterhin hatte ich die Doku angesehen - zumindest das Kapitel über den ScriptServer, doch dort wurde nicht gesagt, daß der komplette Pfad und der Dateiname als erster Parameter an das Script übergeben wird. Dies war ja ursprünglich die Frage ...

Danke auch für das Beispielscript. Das hat mir sehr geholfen.
So. Ich werde noch ein bissel an den Scripten basteln und hoffen, daß sie das machen, was ich will. Danke für deine Hilfe

Grüße
Jens

P.S. Das Script wurde von mir wegen Testzwecken auf ein Testordner losgelassen. Große Gefahr bestand nicht <-)


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

Coolio
Beiträge gesamt: 217

24. Feb 2005, 23:17
Beitrag # 4 von 12
Beitrag ID: #147977
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ähhm? McGregor.
> aber *.pdf.pdf oder *.ps.pdf oder *.prn.pdf

Ich frage mich wiso es dazu kommt das die Dateienamen so aussehen?
Kann man die Sufixsache nicht schon vorher bereinigen? Dann würde sich auch die Angelegenheit mit dem Hotfolder erübrigen.

Gruss Jürg


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

Aleks
Beiträge gesamt: 205

25. Feb 2005, 09:08
Beitrag # 5 von 12
Beitrag ID: #148012
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das ist mal witzig, da ich mich mit dem Scriptschreiben etwas schwer tue habe ich einen Kollegen aus der Webabteilung hinzugezogen, wir haben gerade gestern das gleiche Script für die gleiche Anforderung (.ps.pdf oder prn.pdf) geschriebn, muss mal schauen was bei uns anders ist!


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

Aleks
Beiträge gesamt: 205

25. Feb 2005, 09:18
Beitrag # 6 von 12
Beitrag ID: #148017
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wenn wir schon beim Thema Script e sind, ist es richtig das der Scriptserver die Data/Resource Folk erkennt und weiss daher das ein Tif ein Tif ist auch wenn es keinen suffix hat???? Ich möchte nämlich via Script an alle tif´s und eps´s ein suffix anfügen die keines haben. Ist dies technisch möglich???? Wir haben nämlich auch Windows nutzer im Laden die wegen der fehlende Suffixe meckern!


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

Coolio
Beiträge gesamt: 217

25. Feb 2005, 10:51
Beitrag # 7 von 12
Beitrag ID: #148043
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Aleks
Habe mal im eine ähnliche Frage gestellt. Einfach hald umgekehrt:
http://www.hilfdirselbst.ch/...2&topic_id=23931

Vieleicht nützt das was.

> Ich möchte nämlich via Script an alle tif´s und eps´s ein suffix anfügen die keines haben. Ist dies technisch möglich????

Ist kein Problem
Schau Dir auch mal basename an. Da kannst Du Sufixe wegnemhmen oder zufügen.

Gruss Jürg


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

Thomas Kaiser
  
Beiträge gesamt: 1299

25. Feb 2005, 11:07
Beitrag # 8 von 12
Beitrag ID: #148050
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Aleks,

am 25.02.2005 9:18 Uhr schrieb Aleks:

> ist es richtig das der Scriptserver die Data/Resource Folk erkennt und weiss
> daher das ein Tif ein Tif ist auch wenn es keinen suffix hat?

Mal wieder Grundlagen (bzw. steht das auch im EtherShare bzw. ImageServer Handbuch! Leute, wenn Ihr mit Scripting spielt, dann geht das nicht, ohne die Doku zu lesen... bzw. ist es eine wahnsinnige Zeitverschwendung und ihr riskiert, daß ihr Datenverluste oder korrupte Schreibtischdateien produziert)

Am Mac gibt es ein 'zigfach flexibleres Konzept als Referenzierung über Dateinamenssuffixen à la ".tif", ".eps". Es gibt den sog. "FileType" (bspw. "TIFF" oder "EPSF") und den sog. "Creator Code" (bspw. "8BIM" für Photoshop oder "XPR3").

Der Scriptsrv kann momentan (wird sich in der nächsten Version ändern) ausschließlich per FileTypes konfiguriert werden. D.h. Du bekommst eh schon genau diese Events, die Du willst, also wenn eine Datei namens "Bild 1" mit dem FileType "TIFF" neu auf dem Server aufschlägt, bekommst Du den passenden Event dafür. Alles, was Du noch tun mußt, ist die Datei mit Suffix umzubenennen...

Gruss,

Thomas
--
http://kaiser-edv.de/news/


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

Thomas Kaiser
  
Beiträge gesamt: 1299

25. Feb 2005, 11:07
Beitrag # 9 von 12
Beitrag ID: #148051
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Aleks,

> habe ich einen Kollegen aus der Webabteilung hinzugezogen

Achtung: So produktiv das regelmäßig ist, Leute mit Scripting-Erfahrung zu solchen Aufgabenstellungen hinzuzuziehen, so schnell kann das auch nach hinten losgehen, wenn die spezifischen Randbedingungen nicht beachtet werden!!

1) Immer Desktop Utilities benutzen. Immer!

2) Im Hinterkopf haben, wie Dateireferenzierungen am Mac funktionieren (File- und Directory-IDs spielen eine Rolle wichtige Rolle neben den Dateipfaden. Dazu auch FileType und Creator Code)

3) Quoting, Quoting, Quoting! "Wald- und Wiesenskripter" aus dem Web- und Linux-Umfeld benutzen meist "optimale" Dateinamen. Die kämen nie auf die Idee, eine Datei mit Sonder-, Spezial- und Leerzeichen im Namen anzulegen (à la "1./2. April. *taler.tiff"). Wenn Ihr auf dem Server anfangt, zu skripten, müßt Ihr auf alles gefaßt sein, was dem gemeinen Mac- oder Windows-Operator so an "Gemeinheiten" einfällt hinsichtlich Benamung von Dateien. D.h. jedes vergessene Quoten von Variablen mit Anführungszeichen kann direkt in Katastrophen münden!

Vielleicht wäre das Anbieten einer Grundlagenschulung zum Scriptsrv eine gute Idee? Bestünde da Interesse?

Gruss,

Thomas
--
http://kaiser-edv.de/news/


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

Thomas Kaiser
  
Beiträge gesamt: 1299

25. Feb 2005, 11:08
Beitrag # 10 von 12
Beitrag ID: #148052
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Servus Jens,

> Danke auch für das Beispielscript.

Äh... nur, falls es nicht rübergekommen sein sollte. Die 6 Zeilen zusammen waren bereits das komplette und funktionsfähige Skript. Aber: Explizite Funktions- bzw. allgemeine Garantie gebe ich via Forum natürlich nicht ;-)

Gruss,

Thomas
--
http://kaiser-edv.de/news/


als Antwort auf: [#147802]

Scriptprobleme - Woher kommt der Name???

McGregor
Beiträge gesamt: 5

25. Feb 2005, 11:43
Beitrag # 11 von 12
Beitrag ID: #148057
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi!

Schon klar, aber ich habe eine kleine Änderung vorgenommen, weil es mir zu "allgemein" war :-)
Ich habe folgende Zeile ersetzt:

newFile="$(echo "$myFile" | sed 's/\.[p|P][drsDRS][FNfn]*\.[p|P][d|D][f|F]$/.pdf/g')"

Grüße
Jens


als Antwort auf: [#147802]
(Dieser Beitrag wurde von McGregor am 25. Feb 2005, 11:55 geändert)

Scriptprobleme - Woher kommt der Name???

Thomas Richard
Beiträge gesamt: 19338

25. Feb 2005, 13:12
Beitrag # 12 von 12
Beitrag ID: #148076
Bewertung:
(4753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

> Vielleicht wäre das Anbieten einer Grundlagenschulung zum
> Scriptsrv eine gute Idee? Bestünde da Interesse?

Ich denke, ich muss gar nicht mehr 'Hier!' schreien.


MfG

Thomas


als Antwort auf: [#147802]
X