kMax
09.07.06, 15:24
Hallo Forum,
ich habe folgendes Problem:
Ich möchte mittels eines Bash-cgi-Skripts die erste Zeile von TEXTDATEI_1 unter die letzte Zeile von TEXTDATEI_2 hängen.
Dazu verwende ich folgende Befehle:
# Fügt Zeile 1 aus Datei 1 unter die letzte Zeile von Datei 2
head -n1 TEXTDATEI_1 >> TEXTDATEI_2
# löscht die erste Zeile aus Datei 1
sed -i 1D TEXTDATEI_1
Beide Befehle erfüllen in folgenden Fällen ihren Dienst:
1) Wenn ich sie als User im homedir ausführe
2) Wenn ich sie als root irgendwo ausführe
Da ich beide Befehle als cgi-skript aufrufen möchte habe ich folgende Dateien in den Ordner
/srv/www/cgi-bin kopiert. (Ich verwende Apache)
-rw-rw-rw- 1 root root 64 2006-07-09 15:51 TEXTDATEI_1
-rw-rw-rw- 1 root root 28 2006-07-09 15:54 TEXTDATEI_2
-rwxr-xr-x 1 root root 245 2006-07-09 15:51 vt.cgi
Das cgi-skript (vt.cgi) sieht so aus:
#!/bin/sh
echo 'Content-type: text/html'
echo
echo "<html><head><title>Skript</title></head><body>"
echo "<pre>"
head -n1 TEXTDATEI_1 >> TEXTDATEI_2
sed -i 1D TEXTDATEI_1
echo "<pre>"
echo "</body></html>"
Nun das Problem:
Wenn ich das skript mittels http://localhost/cgi-bin/vt.cgi aufrufe wird zwar "head" erfolgreich ausgeführt, aber "sed" scheint nicht zu funktionieren da TEXTDATEI_1 unverändert bleibt. Führe ich vt.cgi per Hand in einer root-shell aus funktioniert es. Führe ich es als User in einer shell aus, so meldet sed:
sed: couldn't open temporary file ./sedUBoQN8: Keine Berechtigung
Ich verstehe nicht weshalb ich als User mit ">>" Dateien verändern kann, mit "sed" aber nicht.
Wäre toll wenn mir das jemand erklären kann.
Danke.
ich habe folgendes Problem:
Ich möchte mittels eines Bash-cgi-Skripts die erste Zeile von TEXTDATEI_1 unter die letzte Zeile von TEXTDATEI_2 hängen.
Dazu verwende ich folgende Befehle:
# Fügt Zeile 1 aus Datei 1 unter die letzte Zeile von Datei 2
head -n1 TEXTDATEI_1 >> TEXTDATEI_2
# löscht die erste Zeile aus Datei 1
sed -i 1D TEXTDATEI_1
Beide Befehle erfüllen in folgenden Fällen ihren Dienst:
1) Wenn ich sie als User im homedir ausführe
2) Wenn ich sie als root irgendwo ausführe
Da ich beide Befehle als cgi-skript aufrufen möchte habe ich folgende Dateien in den Ordner
/srv/www/cgi-bin kopiert. (Ich verwende Apache)
-rw-rw-rw- 1 root root 64 2006-07-09 15:51 TEXTDATEI_1
-rw-rw-rw- 1 root root 28 2006-07-09 15:54 TEXTDATEI_2
-rwxr-xr-x 1 root root 245 2006-07-09 15:51 vt.cgi
Das cgi-skript (vt.cgi) sieht so aus:
#!/bin/sh
echo 'Content-type: text/html'
echo
echo "<html><head><title>Skript</title></head><body>"
echo "<pre>"
head -n1 TEXTDATEI_1 >> TEXTDATEI_2
sed -i 1D TEXTDATEI_1
echo "<pre>"
echo "</body></html>"
Nun das Problem:
Wenn ich das skript mittels http://localhost/cgi-bin/vt.cgi aufrufe wird zwar "head" erfolgreich ausgeführt, aber "sed" scheint nicht zu funktionieren da TEXTDATEI_1 unverändert bleibt. Führe ich vt.cgi per Hand in einer root-shell aus funktioniert es. Führe ich es als User in einer shell aus, so meldet sed:
sed: couldn't open temporary file ./sedUBoQN8: Keine Berechtigung
Ich verstehe nicht weshalb ich als User mit ">>" Dateien verändern kann, mit "sed" aber nicht.
Wäre toll wenn mir das jemand erklären kann.
Danke.