Hallo, ich brauche nochmal eure Hilfe für ein Batchprogramm.
Das Programm startet u.a. einen Browser, nutzt das read-Kommando und soll unter einer speziellen User-Kennung laufen. Das funktioniert auch, wenn ich es auf einer Konsole von diesem User aus starte. Wenn ich es aber über einen KDE-Desktop-Programmsymbol starte läuft das read-Kommando nicht richtig (der Browser startet korrekt, seit ich "DISPLAY=:0.0" vor den Browser-Aufruf eingefügt habe). Außerdem funktioniert die Kontrolleiste nicht, solange der Batch läuft.
wie kann ich den Fehler beheben oder wo finde ich besser Doku zu diesem "KDE-Desktop-Programmsymbol" ?
Gruß
heriL
Linux 14.981 Themen, 106.338 Beiträge
ok, aber KDE bietet Programmsymbole an; deren Parameter erlauben ein Programm in einem Terminal und von einem anderen User zu starten. außerdem gibt es Parameter zur dcop-Registrierung, die für mich nicht selbsterklärend sind: "Im Systemabschnitt der Kontrolleiste anzeigen" und dcop-Registrierung: Bis zum Abschluß durchlaufen lassen" (eine Beschreibung dazu suche ich noch).
ok, ich habe mir gerade die Prozesse angesehen und der Ablauf ist folgender:
konsole > su > ksystraycmd > skript > opera mit dem Klick auf das Programmsymbol startet su und die übrigen Programm folgen.
es öffnet sich ein Terminalfenster in dem das Skript (sorry für den Fautpas) abläuft - das read-Kommando wird übergangen und die folgende if-Abfrage, die eine Eingabe aus dem read erwartet, läuft auf eine Fehler; opera startet und die Kontrolleiste ist blockiert
mit sudo vom Terminalfenster aus gestartet sieht das so aus:
konsole > bash > skript > opera (Voraussetzung: xhost +)
wie uscos vorgeschlagen hat, habe ich den Code unten reinkopiert,
Gruß
heriL
--------------------------------
#! /bin/sh
#start
echo start
DISPLAY=:0.0 opera -nomail >~/operatmp.txt 2>&1 &
pid=$!
echo "opera-pid = "$pid
echo "warten auf opera ende" #test
read -p "tmp öffnen? (y/n)" goon
echo $goon
if [ $goon = "y" ];
then
container="/x-inet/tmp-i.toc"
mountdir="/x-inet/download/tmpsik"
echo "1- " #start $mountdir mounten"
#echo `truecrypt -v -l`
echo "2- " #truecrypt -v -u $container $mountdir"
truecrypt -v -u $container $mountdir
ifopen=`truecrypt -l 2>&1`
echo "3- " #gemountete Container: "$ifopen
if [ "$ifopen" = "No volumes mapped" ]; then
echo "mounten nicht gelungen"; else
touch $mountdir/"last-open-dat"
echo "5- $container gemountet unter $mountdir"
ls -l $mountdir;
fi
wait $pid
truecrypt -v -d $mountdir
echo 6-;
else
wait $pid
fi
#wait $pid
echo "opera ende"
rm ~/operatmp.txt
exit 0
--------------------------------
