ubuntuusers.de

Startup bashscript

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

canhenrik

Anmeldungsdatum:
11. März 2010

Beiträge: Zähle...

Guten Abend allerseits,

ich schlage mich nun schon seit einigen Stunden bzw. Tagen mit Sockso und der Encodierung von Umlauten herum und habe nun folgendes Problem: wenn ich mich per ssh auf dem Server einlogge und sockso mit

sudo /etc/init.d/sockso start

starte, funktioniert alles perfekt (Umlaute etc.), erstelle ich nun einen neuen Dienst mit

sudo update-rc.d -f sockso defaults

wird das Programm zwar gestartet aber Umlaute und somit auch das abspielen von bspw. den Ärzten läuft nicht mehr.

Mein Workaround: ins startscript einfach

su user -c "echo password | sudo perl /etc/init.d/sockso.pl &1"

schreiben, leider funtzt das irgendwie nicht.

Falls ihr einen besseren Vorschlag habt, wäre ich euch für ein wenig Hilfe sehr dankbar!

Das Problem mit den Umlauten scheint im Netz bisher nicht gelöst worden zu sein, habe zu locales ISO hinzugefügt und MySQL auf UTF-8 gesetzt, das waren die einzigen brauchbaren Tipps, allerdings läuft es bisher nur im obigen Fall.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi canhenrik,

das riecht mir nach einem Problem mit dem locale ...

Was wirft Dir ein locale auf dem Server aus, und was auf Deinem heimatlichen Rechner ?
Möglicherweise ist schon etwas behoben, wenn Du das passende locale in der Variablen $LC_ALL mitgibst:

LC_ALL=...  sudo update-rc.d -f sockso defaults

Eventuell hilft auch die passende locale-Einstellung beim mount wenn es um Dateinamen auf einem externen Laufwerk geht.

track

canhenrik

(Themenstarter)

Anmeldungsdatum:
11. März 2010

Beiträge: 12

Hey track,

danke für die Antwort, hier der Output vom Server:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

welches locale soll ich denn in der Variable LC_ALL mitgeben, kenn mich damit leider nicht wirklich aus. Soll ich die auf de_DE setzen? Die Dateinamen befinden sich auf einem externen Laufwerk, werden in der fstab ganz normal gemountet (ext2), wo ist es den sinnvoller anzusetzen? Schon mal danke für die Tipps.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Wenn das locale auf Deinem heimatlichen Rechner das selbe ist, ist das nicht der Punkt.
Auf Unterschiede käme es hier an.

Also typischerweise Win..-Dateinamen (→ Codepage Windows-1252) in einem utf-8 Dateisystem.

Kannst Du innerhalb von sockso feststellen, mit welchem locale er läuft ?

Und: wie sieht die fstab-Zeile für Dein externes Laufwerk genau aus ?
- möglicherweise zeigt das den Punkt.

track

canhenrik

(Themenstarter)

Anmeldungsdatum:
11. März 2010

Beiträge: 12

Hey track,

ich glaube, ich habe das Problem nicht klar genug dargestellt: Ich habe einen Server mit Ubuntu 9.10 drauf und dort habe ich Sockso installiert. Wenn ich sockso dort als startup Dienst eintrage funktioniert unabhängig vom Client die Darstellung und der Zugriff auf Alben die Umlaute enthalten nicht. Verbinde ich mich mit ssh und starte Sockso "von Hand" neu, so funktioniert alles perfekt. Ich sage das deshalb, weil du dich immer wieder auf die Konfiguration des Clients bezogen hast, die meiner Meinung nach an dieser Stelle irrelevant ist, sollte ich dich falsch verstanden haben, tut mir das natürlich leid ☺

Momentan starte ich den Dienst, indem ich dem mit dem Server verbundenen Router einfach ssh root@server "perl /etc/init.d/sockso.pl" per cron ausführen lasse, nachdem der Server gestartet wurde. Das ist allerdings dermaßen unelegant, dass ich dir für Hilfe weiterhin sehr dankbar wäre. Grüße

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ja, auch das locale des Client wollte ich mit wissen.
Oder bist Du sicher, dass ssh nicht eventuell sein locale mitnimmt ?

An so einen Effekt dachte ich. Und darum auch hartnäckig meine Frage nach dem Vergleich:
Was ist die Umgebung wenn es klappt, und was ist die Umgebung wenn es schief geht ?

Das ist der sinnvollste Ansatz den ich weiss.

track

canhenrik

(Themenstarter)

Anmeldungsdatum:
11. März 2010

Beiträge: 12

sorry, jetzt verstehe ich was du meinst. Also hier das lokale vom client (MacBook) wenn es funtzt:

LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL=

und hier nochmal die Einstellung vom Server:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

sehen allerdings recht ähnlich aus.Wie soll ich denn deiner Meinung nach die LC_ALL binden? Grüße

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Also doch beide gleich. Dann kann es das nicht sein.

Kann es sein, dass /etc/init.d/sockso und sockso nicht dasselbe sind ?

Was sagt ein which sockso ?
Und was steht in /etc/init.d/sockso so drin ?

Aber noch was anderes: das Startscript läuft doch sowieso unter dem User "root", nicht wahr ?
Dann solltest Du dort doch auch einfach /etc/init.d/sockso start aufrufen können, denn "sudo" bist Du dann ja schon.

track

canhenrik

(Themenstarter)

Anmeldungsdatum:
11. März 2010

Beiträge: 12

also, in /etc/init.d/sockso steht einfach nur

#!/bin/bash
perl /etc/init.d/sockso.pl $1
exit 0

ja, die Lösung mit dem User-switch war totaler Quatsch, das macht keinen Unterschied ob ich nun als root oder normaler user mit sudo neustarte ☺ beide Male funktioniert es, leider halt nur nie so ganz wenn es als startup-dienst eingetragen ist.

canhenrik

(Themenstarter)

Anmeldungsdatum:
11. März 2010

Beiträge: 12

es steht natürlich genau genommen Folgendes drin:

#!/bin/bash
perl /etc/init.d/sockso.pl $1
exit 0

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hast Du mal geguckt, was update-rc.d -f sockso defaults letztlich unter /etd/init.d einträgt ?
Vielleicht verrät das warum es schief geht.

Und sonst trägst Du eben mit Hand die Zeile

/etc/init.d/sockso start

in die Datei /etc/rc.local ein, natürlich vor der Schluszeile exit 0 ...
Dann solltest Du es doch auch haben.

track

canhenrik

(Themenstarter)

Anmeldungsdatum:
11. März 2010

Beiträge: 12

das habe ich alles gemacht, sockso startet doch auch, es werden nur keine Umlaute unterstützt. Ich bin momentan mit der Lösung über den Router zwar nicht zufrieden, aber nach einigem googlen scheint es so, als hätten mehrere Leute dieses Problem und es nicht eleganter lösen können. Aber danke für deine Hilfe

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Die Sache mit den Umlauten scheint mir noch immer so, als wenn er irgendwo unterwegs sein locale verliert.

Darum hatte ich so hartnäckig nach den Unterschieden gefahndet.

Und die Variante mit der /etc/rc.local bringt auch keinen Unterschied sagst Du ?

track

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Welche Nummer hat denn das Startskript für sockso? Vielleicht hilft es, das einfach in der Reihenfolge nach hinten zu schieben. Ich denke da in eine Richtung, dass die Locale aus welchen Gründen auch immer erst nach dem Start von sockso gesetzt wird.

Oder du modifizierst das Startskript so, dass die Ausgabe von locale in irgendeine Datei geschrieben wird; evtl. kommt man dem Problem so auf die Spur.

MfG Dalai

canhenrik

(Themenstarter)

Anmeldungsdatum:
11. März 2010

Beiträge: 12

hatte es schon auf S99, die Idee mit dem rausschreiben der locale werde ich später mal versuchen. Danke für den Tipp

Antworten |