Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
schdefan
- Beiträge: 39
- Registriert: 01.05.2004 19:41:59
- Wohnort: wien
Beitrag
von schdefan » 20.08.2004 20:13:20
Mit meinem kleinen Skript kann ich nun überprüfen ob eine CD im Laufwerk liegt. Wenn das der Fall sein sollte, werden alle mp3 Dateien in das Verzeichnis /music/ kopiert werden.
Code: Alles auswählen
#!/bin/bash
# file: cdrom_update.sh
DIR=/music/
CD=`cd /mnt/cdrom && grep -c /mnt/auto/cdrom /proc/mounts`
clear
echo "MOUNTING CDROM"
if [ 1 -eq "$CD" ] ; then
echo "START COPYING MP3 FILES"
for file in `find /mnt/cdrom/ -type f -name "*.mp3"`
do
echo -n $file
cp -Rf $file $DIR
done
fi
echo " END COPYING MP3 FILES"
ls -la $DIR
echo "KICK OUT CDROM"
eject
Führe ich
in der Konsole aus werden die mp3-Dateien aufgelistet.
/mnt/cdrom/Nithin Sawney/Beyond Skin (complete)/02 - nitin sawhney - letting go.mp3
Von meinem Skript aus werden seltsamerweise Zeilenumbrüche im Dateinamen erzeugt, so dass dann die Dateien auf der CD nicht mehr gefunden werden können.
Ausgabe aus dem Skript:
schdefan
cp: Aufruf von stat für ,,/mnt/cdrom/Nithin" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,Sawney/Beyond" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,Skin" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,(complete)/02" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,-" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,nitin" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,sawhney" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,-" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,letting" nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für ,,go.mp3" nicht möglich: Datei oder Verzeichnis nicht gefunden
Das muß wwohl was mit den Leerstellen im Dateinamen zu tun haben!
hat jemand einen Rat?
schdefan
free software for free people.
open source for open minds.
-------------------------------------
jabber:
schdefan@jabber.org
-
fred19726
- Beiträge: 507
- Registriert: 18.07.2002 03:38:38
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Heidelberg (DE)
-
Kontaktdaten:
Beitrag
von fred19726 » 20.08.2004 20:24:30
Versuchs mal so:
Code: Alles auswählen
#!/bin/bash
# file: cdrom_update.sh
DIR=/music/
CD=`cd /mnt/cdrom && grep -c /mnt/auto/cdrom /proc/mounts`
clear
echo "MOUNTING CDROM"
if [ 1 -eq "$CD" ] ; then
echo "START COPYING MP3 FILES"
find /mnt/cdrom -type f -name "*.mp3" -exec cp -Rvf \{\} "$DIR" \;
fi
echo " END COPYING MP3 FILES"
ls -la $DIR
echo "KICK OUT CDROM"
eject
MfG Fred
/edit: hatte mich verschrieben jetzt sollte es aber stimmen
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
-
schdefan
- Beiträge: 39
- Registriert: 01.05.2004 19:41:59
- Wohnort: wien
Beitrag
von schdefan » 20.08.2004 20:51:56
Code: Alles auswählen
if [ 1 -eq "$CD" ] ; then
echo "START COPYING MP3 FILES"
find /mnt/cdrom/ -type f -name "*.mp3" -exec cp -Rvf \{\} "$DIR" \;
fi
echo " END COPYING MP3 FILES"
ls -la $DIR
echo "KICK OUT CDROM"
eject
so passt es jetz! slash hinter cdrom/ war wichtig.
Danke fred19726.
schdefan
free software for free people.
open source for open minds.
-------------------------------------
jabber:
schdefan@jabber.org
-
schdefan
- Beiträge: 39
- Registriert: 01.05.2004 19:41:59
- Wohnort: wien
Beitrag
von schdefan » 20.08.2004 21:26:20
Dieses Skript soll ständig laufen. Ich habe es in den crontab hinzugefügt
Eintrag in crontab:
Funktioniert leider nicht!
free software for free people.
open source for open minds.
-------------------------------------
jabber:
schdefan@jabber.org
-
fred19726
- Beiträge: 507
- Registriert: 18.07.2002 03:38:38
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Heidelberg (DE)
-
Kontaktdaten:
Beitrag
von fred19726 » 20.08.2004 21:35:04
so wirds immer um eine Minute nach der vollen Stunde ausgeführt.
und so wirds jede Minute ausgeführt
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein
-
peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Beitrag
von peschmae » 21.08.2004 18:47:06
generell könntest du auch IFS setzen:
IFS ist der
Irgendwas
File
Separator oder so ähnlich und standardmässig auf Zeilenumbruch oder Leerschlag gesetzt - wenn du den nur auf einen Zeilenumbruch setzt dann funktioniert die Sache auch.
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
-
schdefan
- Beiträge: 39
- Registriert: 01.05.2004 19:41:59
- Wohnort: wien
Beitrag
von schdefan » 23.08.2004 10:22:49
Die Variante von fred19726 funktioniert, aber trotzdem danke peschmae für den Hinweise des IFS.
Hab noch ein Frage zum crontab. Mit den fünf Sternen wird nun jede Minute mein Skript aufgerufen. Allerdings befinde ich mich nun in einer Endlosschleife, da das Kopieren einer kompletten CD ja länger als eine Minute dauert.
Ist das Kopieren abgeschlossen soll die CD ausgeworfen werden, deshalb habe ich ja den Befehl eject iam Ende des Skripts eingebaut. Leider öffnet sich das Laufwerk nicht, sondern der Kopiervorgang startet erneut.
Ich benutze automount. Kann man in automount mein Skript einbauen, so dass ich keine Endlosschleife mehr habe? Oder weiß jemand eine andere Lösung als jede Minute in das Verzeichnis /mnt/cdrom zu schauen und den Inhalt zu prüfen?
schdefan
free software for free people.
open source for open minds.
-------------------------------------
jabber:
schdefan@jabber.org
-
peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Beitrag
von peschmae » 23.08.2004 12:05:36
Du kannst natürlich aus dem ganzen Script eine Endlosschleife machen - d.h. das Script guckt und wartet in einer Schleife (mit etwa 1 Minute sleep jeweils). Wenn ne CD da ist liests die aus und springt dann wieder an den Anfang.
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy