Script für Telefonbuchaktualisierung

Hallo,

für eine Telefonbuchaktualisierung würde ich gerne einen Cron realisieren und vorgängig mit einem Script eine CSV-Datei von einem Netzwerkordner in den lokalen Tmp-Ordner kopieren.

Wurde allenfalls schon so ein Script für den Kopiervorgang realisiert? Wenn ja, könnte dieses mir zur Verfügung gestellt werden?

Vielen Dank und Grüsse
Fabian

Hallo Fabian,

wie willst du die CSV Datei auf deine Anlage kopieren? smb, scp? So etwa in der Art würde das mit smbget aussehen:

**/etc/admin/csvcopy.sh
**

#!/bin/bash
/usr/bin/smbget --username=mobydick --password=1234 smb://1.2.3.4/mobydick/PhoneBook.csv /tmp/PhoneBook.csv

Tom

Hallo Tom,

am liebsten würde ich im Cronsjop Script vorher einen Befehl eintragen, der mir die entsprechende CSV-Datei von einem Windows-Netzwerkordner holt und in den tmp-Ordner kopiert.

Wenn du die csv Datei von einer Windows Share ziehen willst kannst du das mit dem smbget Befehl aus dem oben stehenden Beispiel lösen. Das Shellskript mit dem Befehl kannst du dann als Vorher Skript in deinem Job aufrufen (z.B. /etc/admin/csvcopy.sh).

Hallo Tom,

vielen Dank, dies habe ich so einmal erstellt und versucht. Leider erhalte ich die Fehlermeldung “sh: /etc/admin/csvcopy.sh: Permission denied” wenn ich den Cronjob ausführe? (In der csvcopy.sh habe ich zum Test den Administrator-Benutzer angegeben.)
Was könnte das Problem sein?

Grüsse
Fabian

Habe bei den File-Eigenschaften die Berechtigung auf 755 geändert und erhalte jetzt in der MobyDick folgende Meldungen:

tsk020506: Starte Task 020506 ‘Cronjob ausführen’, Parameter: [210905|/etc/admin/csvcopy.sh||3], User-ID: [1]
Starte Cron Job 210905
Starte das Pre-Script
Starte [/etc/admin/csvcopy.sh]
Can’t open Test.csv: File exists
smbc_open: Invalid argument
… params.c:OpenConfFile() - Unable to open configuration file “//.smb/smb.conf”:
… No such file or directory
… params.c:OpenConfFile() - Unable to open configuration file “//.smb/smb.conf.append”:
… No such file or directory
… Using workgroup MOBYDICK, user administrator
. Exit: [1]
Pre-Script wurde mit Fehlern beendet

Wenn ich in der Console (als Admin) das Script starte, wird die Test.csv in /etc/admin kopiert und es erscheint aber auch die Meldung:

admin@TVA:~$ /etc/admin/csvcopy.sh
params.c:OpenConfFile() - Unable to open configuration file “/etc/admin/.smb/smb.conf”:
No such file or directory
params.c:OpenConfFile() - Unable to open configuration file “/etc/admin/.smb/smb.conf.append”:
Datei oder Verzeichnis nicht gefunden
Using workgroup MOBYDICK, user administrator
smb://1.2.3.4/Sync/Test.csv
smbc_open: Das Argument ist ungültig

Du musst dann noch die Rechte auf das Skritp anpassen und es ausführbar machen:

chmod 755 /etc/admin/csvcopy.sh

Du kannst das Skript dann auch “trocken” auf der Konsole testen ob es funktioniert:

./csvcopy.sh

Hallo Tom,

nehme an, Du hast meine Korrektur nicht mitgekriegt. Die Rechte habe ich noch korrigiert, es geht aber trotzdem nicht.

In der Console erscheint folgende Ausgabe nach der Scriptausführung:

admin@TVA:~$ /etc/admin/csvcopy.sh
params.c:OpenConfFile() - Unable to open configuration file “/etc/admin/.smb/smb.conf”:
No such file or directory
params.c:OpenConfFile() - Unable to open configuration file “/etc/admin/.smb/smb.conf.append”:
Datei oder Verzeichnis nicht gefunden
Using workgroup MOBYDICK, user administrator
smb://1.2.3.4/Sync/Test.csv
smbc_open: Das Argument ist ungültig

Danke und Gruss
Fabian

Ok, wenn du das Skript manuell ausführst ist der obere Teil normal dann solltest du allerdings einen Download mit Fortschrittsbalken sehen. Das du “1.2.3.4” durch die IP des Freigabe-Hosts austauschen muss war soweit klar?

In dem obigen Skript war die Ziel-File Angabe noch falsch, so ist es besser:

#!/bin/bash
/usr/bin/smbget --username=mobydick --password=1234 --outputfile=‘//tmp/Test.csv’ smb://1.2.3.4/Sync/Test.csv

Hallo Tom,

Vielen Dank, wenn ich noch --domain=domainname hinzufüge und ich das Skript in der Konsole starte, wird die Verbindung hergestellt aber der Download zeigt/bleibt 0 an. Fehlermeldung wird nicht angezeigt. (In der Konsole bin ich als Admin angemeldet.)

Wenn ich das Script so schreibe:

#!/bin/bash
/usr/bin/smbget --username=mobydick --password=1234 smb://1.2.3.4/Sync/Test.csv
mv /etc/admin/Test.csv /tmp/Test.csv

Funktioniert es in der Konsole, in der MD erscheint aber die folgende Fehlermeldung:

2014-11-13 22:16:21 sql: Connecting to database
2014-11-13 22:16:21 tsk020506: Starte Task 020506 ‘Cronjob ausführen’, Parameter: [210905|/etc/admin/rmcsvcopy.sh
/etc/admin/csvcopy.sh||3], User-ID: [1]
2014-11-13 22:16:21 Starte Cron Job 210905
2014-11-13 22:16:21 Starte das Pre-Script
2014-11-13 22:16:21 . Starte [/etc/admin/rmcsvcopy.sh
/etc/admin/csvcopy.sh]
sh: /etc/admin/rmcsvcopy.sh
: not found
Can’t open Test.csv: File exists
mv: cannot stat `/etc/admin/Test.csv’: No such file or directory
2014-11-13 22:16:21 … params.c:OpenConfFile() - Unable to open configuration file “//.smb/smb.conf”:
2014-11-13 22:16:21 … No such file or directory
2014-11-13 22:16:21 … params.c:OpenConfFile() - Unable to open configuration file “//.smb/smb.conf.append”:
2014-11-13 22:16:21 … No such file or directory
2014-11-13 22:16:21 … Using workgroup MOBYDICK, user admin
2014-11-13 22:16:21 . Exit: [1]

Weisst Du, was hier das Problem sein könnte?

Danke und Grüsse
Fabian

Also das Problem ist wenn du das Skript ohne den Parameter “–outputfile=” ausführst landet die heruntergeladene Datei in dem Verzeinis in dem das Skript ausgeführt wird, nicht in dem das Skript liegt.

Du hast jetzt also entweder die Möglichkeit das Downloadziel mit dem Parameter outputfile genau zu definieren (einfache und schöne Variante):

/usr/bin/smbget --username=mobydick --password=1234 --domain=domainname --outputfile=‘//tmp/Test.csv’ smb://1.2.3.4/Sync/Test.csv

Oder du wechsest in dem Skript vorher das Verzeichnis und verschiebst die Datei anschließend (Schönheit? naja es wird funktionieren ;-))

cd /etc/admin
/usr/bin/smbget --username=mobydick --password=1234 --domain=domainname smb://1.2.3.4/Sync/Test.csv
mv /etc/admin/Test.csv /tmp/Test.csv

Mit --outpufile würde ich auch bevorzugen, aber der Download bleibt bei 0 stehen und mit dem Verschieben funktioniert es.

Was mein grösseres Problem ist, ist die Ausgabe in der MobyDick. Dort funktioniert es so oder so nicht. Die Fehlermeldung ist:

… params.c:OpenConfFile() - Unable to open configuration file “//.smb/smb.conf”:
2014-11-13 22:16:21 … No such file or directory
2014-11-13 22:16:21 … params.c:OpenConfFile() - Unable to open configuration file “//.smb/smb.conf.append”:
2014-11-13 22:16:21 … No such file or directory
2014-11-13 22:16:21 … Using workgroup MOBYDICK, user admin

Was könnte das sein?

Danke und Gruss
Fabian

Hallo Tom,

Mit folgende Lösung funktioniert es bei mir:

  1. Habe im Ordner /etc/root den Ordner .smb erstellt
  2. in diesem Ordner habe ich die Datei smb.conf mit folgendem Inhalt erstellt:

[global]
security = user
domain = domainname
guest account = nobody

[homes]
comment = Home Directories
browseable = no
read only = no
create mode = 0750

  1. Die Scriptdatei csvcopy.sh im Ordner /etc/admin/ mit dem Inhalt:

#!/bin/bash
rm /tmp/Test.csv
/usr/bin/smbget --username=Benutzer --password=Passwort --outputfile=’//tmp/Test.csv

  1. Passender Connectorjob erstellt und im Cronjob Script vorher = /etc/admin/csvcopy.sh

Spricht etwas gegen diese Konfiguration, wenn nicht, könnte hier noch etwas verbessert werden, resp. ist diese MD-Update-Resistent?

Vielen Dank und Grüsse
Fabian

Hallo Tom,

hattest Du allenfalls schon einmal Zeit, um mein Lösungsansatz anzuschauen und zu beurteilen?

Vielen Dank und Grüsse
Fabian