Leerzeichen im Pfad für Skript

Hallo Dorian,

Diese kleine Neuerung stellt mich gerade vor ein kleines Problem:
In einem Skript benutze ich den Befehl
cp $SERVERHOME/Einstellungen/monitors.xml $HOME/.config/monitors.xml

Das klappt leider nicht mehr, da echo $SERVERHOME das liefert:

/home/infok/media/infok (H:)

Da ist ein Leerzeichen drin (und auch „(“ und „:“ )

Kannst du mir einen Tipp geben, wie ich die Befehlszeile richtig formulieren muss?

Gruß,
Mathias

Hallo Mathias,

Probier mal mit :

cp $SERVERHOME/Einstellungen/monitors.xml "$HOME/.config/monitors.xml"

Gruß

Arnaud

Ich habe das Thema getrennt.
Der Thread zur neuen Paket sollte eigentlich keine andere Meldung haben als die Neuigkeiten.

Gruß

Arnaud

Hallo Arnaud,
vielen Dank für deine schnelle Reaktion und auch für das Verschieben meine Frage.

Ich zeig mal kurz mein ganzes Skript:

#!/bin/bash

#Monitorprofile 
if [ -e $SERVERHOME/Einstellungen/monitors.xml ]; then
      cp $SERVERHOME/Einstellungen/monitors.xml $HOME/.config/monitors.xml
else
    mkdir -p $SERVERHOME/Einstellungen
    cp $HOME/.config/monitors.xml $SERVERHOME/Einstellungen/monitors.xml
fi

#Monitor-Watchdog

/usr/bin/watchexec -w .config/monitors.xml /etc/linuxmuster-linuxclient7/scripts/checkMonitors.sh &

Das Problem tritt bereits bei
if [ -e $SERVERHOME/Einstellungen/monitors.xml ]; then auf.
Das wird zu
if [ -e /home/infok/media/infok (H:)/monitors.xml ]; then

Und das funktioniert so leider nicht :frowning:

Gruß,
Mathias

Hallo Mathias,

Wie arnaud schon schrieb, musst du den ganzen Pfad (inklusive der Variable) in Anfrührungszeichen setzen.

VG, Dorian

Hallo Dorian,

vielen Dank für deinen Tipp.
Mein Skript sieht jetzt so aus:

#!/bin/bash

#Monitorprofile 
if [ -e "$SERVERHOME/Einstellungen/monitors.xml" ]; then
    cp "$SERVERHOME/Einstellungen/monitors.xml" "$HOME/.config/monitors.xml"
else
    mkdir -p "$SERVERHOME/Einstellungen"
    cp "$HOME/.config/monitors.xml" "$SERVERHOME/Einstellungen/monitors.xml"
fi

#Monitor-Watchdog

/usr/bin/watchexec -w .config/monitors.xml /etc/linuxmuster-linuxclient7/scripts/checkMonitors.sh &

Bei der Ausführung von /etc/linuxmuster-linuxclient7/onLogin.d/30_Monitor.sh bekomme ich diese Meldungen:

infok@lz-r98:~$ cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werdencp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
cp: cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werdenreguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden
cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden

Irgendwie scheint aus /home/infok/media/infok (H:)/Einstellungen/monitors.xml /home/infok/media/infok/Einstellungen/monitors.xml zu werden.
Das (H:) scheint rausgeschmissen zu werden?!?

Hast du noch einen Tipp?

Gruß,
Mathias

Hmm komisch …
Was ergibt ein echo $SERVERHOME?
Gibt es denn das Einstellungen Verteichnis im Home?

VG, Dorian

Da kommt das richtige raus:
/home/infok/media/infok (H:)

Ich hab vor den eigentlichen Befehl mal das gestellt:

`echo cp „$SERVERHOME/Einstellungen/monitors.xml“ „$HOME/.config/monitors.xml“’’

und das ist die Ausgabe:

infok@lz-r98:~$ /etc/linuxmuster-linuxclient7/onLogin.d/30_Monitor.sh
cp /home/infok/media/infok (H:)/Einstellungen/monitors.xml /home/infok/.config/monitors.xml
infok@lz-r98:~$ cp: reguläre Datei '/home/infok/media/infok/Einstellungen/monitors.xml' kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden

Gruß,
Mathias

Jetzt wird’s ganz eigenartig.
Immer wenn ich aus .config zugreife passiert das oben beschriebene.
Ich habe das Skript jetzt so abgeändert:

#Monitorprofile 
if [ -e "$SERVERHOME/Einstellungen/monitors.xml" ]; then
  cp "$SERVERHOME/Einstellungen/monitors.xml" $HOME/monitors.xml
  mv $HOME/monitors.xml $HOME/.config/monitors.xml
else
  mkdir -p "$SERVERHOME/Einstellungen"
  cp $HOME/.config/monitors.xml $HOME/monitors.xml
  cp $HOME/monitors.xml "$SERVERHOME/Einstellungen/monitors.xml"
fi

Wenn ich nicht vom .config-Verzeichnis ins SERVERHOME kopiere, klappt’s. Aber schön ist’s nicht!!!

Was mache ich falsch?

Warum müssen auf den Linux-Clients unbedingt die Laufwerksbuchsaben bei den Shares im Namen stehen? Vorher liefen die Skripte sauber durch…

Gruß,
Mathias

Hallo Dorian,

ich habe jetzt mal die Laufwerksbuchstaben aus den Sharenamen raus genommen. Die Skripte laufen wieder.
Das ist natürlich auch keine saubere Lösung. Denn nach jedem Update von linuxmuster-linuxclient7 muss ich die Änderungen wieder von Hand einpflegen.

Eine andere Lösung wäre mir wesentlich lieber.

Gruß,
Mathias

Hi. Bin nicht sicher, ob das hilft, aber bist du sicher, dass ( und ) bzw sogar evtl der : in einem Bash-Script einfach so akzeptiert werden?

Hi,

Eigentlich sollte das funktionieren.
@rettich wie hast du das „reingehackt“? Hast du einfach die Python-Scripte geändert? Würde als Workaroud sicher auch kurzfristig für andere helfen.

Die Idee hinter den Buchstaben war eine Vereinheitlichung mit Windows. Ich hatte damals viel getestet und keine Probleme gefunden. Ich schau mir das gerne nochmal an, bin aber die nächsten vier Wochen im Urlaub.
Auch eine Configoption, die die Buchstaben deaktiviert, ist natürlich denkbar.
Aber solange ich im Urlaub bin, passiert da nichts, außer jemand anders nimmt sich der Sache an.

VG, Dorian

2 „Gefällt mir“

Hab mal eine Issue aufgemacht:

Hallo Dorian,

  • in /usr/lib/python3/dist-packages/linuxmusterLinuxclient7/user.py Zeile 151 editieren:
    shareName = f"{usernameString}"
  • in /usr/lib/python3/dist-packages/linuxmusterLinuxclient7/gpo.py Zeile 226 editieren:
    shares.mountShare(drive["path"], shareName="{0}".format(drive["label"]))

Gruß,
Mathias

2 „Gefällt mir“

Hallo Mathias,

keine Lösung für das Share-Problem, aber vielleicht eine Anregung: Bei mir bekommen die Clients einfach die monitors.xml per postsync, und das funktioniert für meinen Beamer-Zoo.

Viele Grüße

Wilfried

Hallo Winfried,
vielen Dank für deinen Tip.
Das monitor.xml - Problem ist bereits gelöst siehe hier. So kann jeder User seine Einstellungen speichern…
Für das hier diskutierte Problem habe ich einen Workaround (siehe Beitrag 14).
Gruß,
Mathias

Hi Mathias,

Ich hab das eben nochmal getestet und dein Script von oben funktioniert bei mir einwandfrei …

VG, Dorian