Du bist nicht angemeldet.

#1 19.01.2020 16:43:46

efreak4u
Mitglied

[gelöst] Mate-Desktopumgebung und Shell-Script

Hallo,

Betriebssystem: ist ja wohl klar... tongue
Desktopumgebung: Mate
Terminal-Emulator: rxvt-unicode
Shell: zsh/bash

ich habe wieder einmal ein Problem. Ich moechte ueber einen Starter¹ auf dem Desktop ein Script² ausfuehren, welches mir per "wol" erst den externen Speicher aufweckt, und danach per "sshfs" die entfernten Verzeichnisse einbindet.

Mein Problem liegt nicht darin, dass das nicht funktioniert - das macht es seit Jahren perfekt und voll zufriedenstellend. Mein Problem liegt darin, dass ich in diesem Fall nicht wie bisher das ganze aus der CLI heraus mache, sondern eben mittels Starter. Die Befehle werden auch ausgefuehrt. Das entfernte Geraet wird aufgeweckt, und die Verzeichnisse eingebunden, jedoch nur solange das Script² aktiv ist. Sobald es beendet wurde, sind auch die mounts wieder verschwunden.

Wie laesst sich dieses Problem loesen?

1 - Der Starter: ~/Desktop/NAS-Server.desktop

[Desktop Entry]
Version=1.0
Name=NAS-Server
Comment=Wake NAS and mount Storages
Exec=urxvt -e zsh -c /usr/local/bin/wnas
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=System;Network;
Name[de_DE]=NAS-Server

2 - Das Script: /usr/local/bin/wnas (gekuerzt)

#!/bin/bash

### Pruefe auf Onlinestatus Server, binde Netzwerkspeicher ein
   if [ "$(ls -A /mnt/sshfs/daten)" ]; then
        echo "...bereits eingebunden"
   else
                wol 00:22:... &&
                echo "warte 10 Sekunden auf Festplattenstart" &&
                sleep 10 &&

                sshfs $USER@...:/mnt/daten /mnt/sshfs/daten -C -o users,allow_other,port=1234,IdentityFile=/home/$USER/.ssh/id_nas_$USER 
                sshfs $USER@...:/mnt/music /mnt/sshfs/musik -C -o users,allow_other,port=1234,IdentityFile=/home/$USER/.ssh/id_nas_$USER 
                if [ "$USER" = "X" ]; then
                        sshfs $USER@...:/mnt/daten/X/.Virtual /home/X/.Virtual -C -o users,allow_other,port=1234,IdentityFile=/home/X/.ssh/id_nas_X
                fi
                echo "... erledigt" 
   fi
   exit 0

Probiert habe ich bereits verschiedene Varianten mit & am Ende der Befehlszeilen und sogar eine Dummy-Datei, die mir /usr/local/bin/wnas nochmal in einem neuen Terminal-Emulator oeffnet. Auch Variationen mit vorangestelltem exec, sh -c oder exec sh -c brachten nicht den gewuenschten Erfolg.

Nochmal zur Erinnerung: im Code-Feld geteilte /usr/local/bin/wnas funktioniert hervorragend, wenn ich haendisch einen Terminal-Emulator oeffne und die Datei von diesem aus ausfuehre. Nur vom Starter aus funktioniert es nicht.

Bitte verzeiht mir meine Unwissenheit im Umgang mit Desktopumgebungen - diese benutze ich sonst nicht.

Gruss efreak4u

Beitrag geändert von efreak4u (20.01.2020 21:13:46)

Offline

#2 20.01.2020 15:20:19

wirr
Mitglied

Re: [gelöst] Mate-Desktopumgebung und Shell-Script

Du kannst noch `nohup` versuchen, obwohl ich das beschriebene Verhalten nicht ganz verstehe.

sshfs daemonisiert sich ohne '-f' Flag.

Ich kann das Verhalten mit deiner .desktop Datei und diesem Script nicht nachstellen, d.h. der mount bleibt bestehen:

#!/usr/bin/env bash

echo test | sshfs -o password_stdin test@192.168.0.179:www ~/test/bash/mount

Ich habe aber auch kein mate, sondern den Starter im Dateimanager Thunar angeklickt.

Gibt es einen Log auf dem NAS?
Funktioniert bei dir ein minimales Beispiel auch nicht?

Offline

#3 20.01.2020 20:45:14

efreak4u
Mitglied

Re: [gelöst] Mate-Desktopumgebung und Shell-Script

Hallo wirr,

wirr schrieb:

..., obwohl ich das beschriebene Verhalten nicht ganz verstehe.

sshfs daemonisiert sich ohne '-f' Flag.

... ich auch nicht... du glaubst gar nicht, wie doof ich aus der Waesche guckte...

wirr schrieb:

Gibt es einen Log auf dem NAS?

Das Log ist unaufaellig. Nur das normale Verbinden und Abmelden vom Server.

wirr schrieb:

Funktioniert bei dir ein minimales Beispiel auch nicht?

Nein. Es funktioniert leider auch nicht, wenn ich nur eine Zeile mit dem SSHFS-Kommando in dem Shell-Script habe. Der Mount bleibt nur solange bestehen, wie das Terminalfenster geoeffnet ist.

wirr schrieb:

Du kannst noch `nohup` versuchen...

Damit funktioniert es wie gewuenscht. Woher allerdings dieses unterschiedliche Verhalten zwischen per Hand geoeffnetem Terminal-Emulator und dem Starter kommt, ist mir auch schleierhaft. Vielleicht aeussert sich ja noch der ein oder Andere Leser, der des Raetsels Loesung kennt. big_smile

Ich setze diesen Fred erstmal auf geloest und bedanke mich recht herzlich bei dir. smile

Gruss efreak4u

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums