Discussion:
Problem in ein Script für Update-chk --- Zeilenumbruch
(zu alt für eine Antwort)
Helmut Backhaus
2018-11-28 15:52:10 UTC
Permalink
Hallo zusammen,
ich habe da ein kleines Problem mit einer Ausgabe.

Auszug aus dem Script (/var/install/bin/update-chk03.sh):
--->
# Start update-chk01 with option "no" set var
mecho --stdbr "Update Checker is now looking for updates, this will take
a while!"
/var/install/bin/update-chk01.sh no &
script01=$(pgrep update-chk01.sh)

# Checking if script is still running
while [ -n "$script01" ]
do
script01=$(pgrep update-chk01.sh)
mecho --stdbr "Update Checker is still working hard ..."
sleep 20
done
<---

Wenn das so ausgeführt wird, wird bei dem ersten Durchlauf der While
Schleife die Ausgabe irgend wo gesetzt, sodass es aussieht als würden
Buchstaben fehlen. Die stehen aber in der Zeile darüber ganz links. Das
ist nicht so ganz schön.
Einen würgaround habe ich ...
Aber schön ist der auch nicht!

Und zwar so:
--->
# Start update-chk01 with option "no" set var
mecho --stdbr "Update Checker is now looking for updates, this will take
a while!"
/var/install/bin/update-chk01.sh no &
script01=$(pgrep update-chk01.sh)
mecho <-- Das hilft, macht dann aber auch eine Leerzeile dazwischen

# Checking if script is still running
while [ -n "$script01" ]
do
script01=$(pgrep update-chk01.sh)
mecho --stdbr "Update Checker is still working hard ..."
sleep 20
done
<---

Ist also auch nicht sooo schön.

Hat jemand eine Idee, wie ich das besser lösen könnte?
Ich vermute, dass es durch das Starten des Scripts "update-chk01.sh" mit
der Option verursacht wird, bin mir aber *nicht* sicher.
--
Gruß,
Helmut
Marcus Roeckrath
2018-11-28 16:54:32 UTC
Permalink
Hallo Helmut,
Post by Helmut Backhaus
Wenn das so ausgeführt wird, wird bei dem ersten Durchlauf der While
Schleife die Ausgabe irgend wo gesetzt, sodass es aussieht als würden
Buchstaben fehlen. Die stehen aber in der Zeile darüber ganz links. Das
ist nicht so ganz schön.
Sieht bei mir so aus:

eis # ./update-chk03.sh
Update Checker is now looking for updates, this will take a while!
Update Checker is still working hard ...
Update Checker is still working hard ...

Wo ist das Problem?
--
Gruss Marcus
Helmut Backhaus
2018-11-28 17:26:12 UTC
Permalink
hallo Marcus,
Post by Marcus Roeckrath
eis # ./update-chk03.sh
Update Checker is now looking for updates, this will take a while!
Update Checker is still working hard ...
Update Checker is still working hard ...
Cool!
So würde ich mir das wünschen!
Das ist genau das was ich erwartet hätte.
Post by Marcus Roeckrath
Wo ist das Problem?
Das lässt sich nicht kopieren, schau mal hier:
https://waf.logout.de/p/?c366a9ea7b6d9953#xXJndsr7M8ovLcCJ0tsY+WMSUol2vD5eqpndTSFaI/8=
--
Gruß,
Helmut
Helmut Backhaus
2018-11-28 18:06:35 UTC
Permalink
Hallo Marcus,
Post by Marcus Roeckrath
eis # ./update-chk03.sh
Update Checker is now looking for updates, this will take a while!
Update Checker is still working hard ...
Update Checker is still working hard ...
Machst Du das über ssh, und wenn ja welches Terminal Programm nutzt Du?
Ich hab es jetzt mit 3 verschiedenen probiert, bei einem ist es noch
schlimmer, da wird alles verschoben (unter Mint mint terminal)

Bei den anderen ist es so wie bereits beschrieben.

Auf einer HW-Konsole tritt das Problem *nicht* auf!

Mit dem zusätzlichen "mecho" funktioniert es überall, wenn auch mit
einer Leerzeile mehr.

Ich baue das Paket jetzt so ...
Wenn sich doch noch eine bessere Lösung findet, kommt sie in die nächste
Version.
--
Gruß,
Helmut
Marcus Roeckrath
2018-11-28 18:52:43 UTC
Permalink
Hallo Helmut,
Post by Helmut Backhaus
Post by Marcus Roeckrath
eis # ./update-chk03.sh
Update Checker is now looking for updates, this will take a while!
Update Checker is still working hard ...
Update Checker is still working hard ...
Machst Du das über ssh, und wenn ja welches Terminal Programm nutzt Du?
Das ganz normale Linux-ssh.
--
Gruss Marcus
Helmut Backhaus
2018-11-28 19:11:29 UTC
Permalink
Hallo Marcus,
Post by Marcus Roeckrath
Hallo Helmut,
Post by Helmut Backhaus
Post by Marcus Roeckrath
eis # ./update-chk03.sh
Update Checker is now looking for updates, this will take a while!
Update Checker is still working hard ...
Update Checker is still working hard ...
Machst Du das über ssh, und wenn ja welches Terminal Programm nutzt Du?
Das ganz normale Linux-ssh.
Ne ne, so einfach ist das nicht :-))
ssh ist ja nur das Programm aber die Anzeige wird in der Hauptsache
durch das Terminal-Programm erledigt ...
Da habe ich schon die tollsten Sachen erlebt.

Ich vermute mal, dass Du immer noch mit Suse arbeitest?
Und was für ein Terminal-Programm wird da verwendet?

Ich hab hier auch eine VM mit Suse, aber wenn ich die anschmeisse, wird
das wohl eine längere Update-Orgie :-))
Das wollte ich mir heute nicht mehr geben!
--
Gruß,
Helmut
Marcus Roeckrath
2018-11-28 19:30:03 UTC
Permalink
Hallo Helmut,
Post by Helmut Backhaus
Und was für ein Terminal-Programm wird da verwendet?
Sowohl xterm als auch konsole sehen beide gleich sauber aus.
--
Gruss Marcus
Holger Bruenjes
2018-11-28 19:42:08 UTC
Permalink
Hallo Marcus
Post by Marcus Roeckrath
Post by Helmut Backhaus
Und was für ein Terminal-Programm wird da verwendet?
Sowohl xterm als auch konsole sehen beide gleich sauber aus.
Du musst gucken was exportiert wird, z.B

echo $TERM

Holger
Marcus Roeckrath
2018-11-28 20:45:36 UTC
Permalink
Hallo Holger,
Post by Holger Bruenjes
echo $TERM
xterm
--
Gruss Marcus
Helmut Backhaus
2018-11-29 10:59:42 UTC
Permalink
Hallo Holger, hallo Marcus,
Post by Helmut Backhaus
Hallo Marcus
Post by Marcus Roeckrath
Post by Helmut Backhaus
Und was für ein Terminal-Programm wird da verwendet?
Sowohl xterm als auch konsole sehen beide gleich sauber aus.
Du musst gucken was exportiert wird, z.B
echo $TERM
Ok, also nutzt Du auch den Konsolen-Emulator "xterm"?
Der geht hier auch problemlos!
Und die Ausgabe von $TERM ergibt auch "xterm"
Auf die Idee, den mal zu testen bin ich gar nicht gekommen ...
Installiert ist er :-))

Unter z.B. xfce4-terminal ergibt $TERM aber "xterm-256color"

Also bestätigt sich ja meine Vermutung, dass sich die Terminalprogramme
unterschiedlich verhalten.

Am liebsten wäre mir aber eine Lösung, die überall funktioniert und ich
nicht noch anfangen muss Einstellvorgaben mitzuliefern. Das würde ich
nicht gut finden. Dann würde ich die Lösung mit dem zusätzlichen "mecho"
lassen.

Dank Euch für das testen!!!

Wenn das noch mal jemand testen mag, wäre toll!
Mich würde dann:
- Das Terminalprogramm
- die Ausgabe von "echo $TERM" in dem Jeweiligen Terminalprogramm
intressieren.

Ach ja, auftreten tut das Problem wenn das Script:
/var/install/bin/update-chk03.sh
Aufgerufen wird oder im Menü Service administration --> Update Checker
--> Check for updates now
gewählt wird.
--
Gruß,
Helmut
Holger Bruenjes
2018-11-29 16:47:34 UTC
Permalink
Hallo Helmut
Post by Helmut Backhaus
Wenn das noch mal jemand testen mag, wäre toll!
- Das Terminalprogramm
- die Ausgabe von "echo $TERM" in dem Jeweiligen Terminalprogramm
intressieren.
Die Teminalemulation wird ja mit ssh exportiert, d.h. die bringst Du
ja mit. bzw die ist dem Terminalprogramm eingestellt.

siehe auch PuTTY, da musst Du zumindest putty als
Terminal-type-string eintragen, sonst hast Du alle Zeichen da wo sie
nicht sein sollten.

Du kannst die Ausgabe nicht vom Server beeinflussen.

eisfair unterstuetzt direkt xterm* und putty* alles andere als
linux, siehe dafuer auch /etc/profile

Holger
Helmut Backhaus
2018-11-29 18:50:16 UTC
Permalink
Hallo Holger,
Post by Marcus Roeckrath
Hallo Helmut
Post by Helmut Backhaus
Wenn das noch mal jemand testen mag, wäre toll!
- Das Terminalprogramm
- die Ausgabe von "echo $TERM" in dem Jeweiligen Terminalprogramm
intressieren.
Die Teminalemulation wird ja mit ssh exportiert, d.h. die bringst Du
ja mit. bzw die ist dem Terminalprogramm eingestellt.
Ja soweit klar.
Also ist es ja abhängig vom Terminalprogramm bzw. von seinen
Einstellungen, richtig?

Und hier erwarte ich (für mich und andere) das ein, wie in diesem Fall,
sh Script in dem Standard Terminalprogramm auch fehlerfrei
funktioniert. Hier bin ich der Meinung, dass der Autor des Scripts dafür
sorge trägt, in diesem Fall ich. Oder erwarte ich da zu viel?
Post by Marcus Roeckrath
siehe auch PuTTY, da musst Du zumindest putty als
Terminal-type-string eintragen, sonst hast Du alle Zeichen da wo sie
nicht sein sollten.
Ok, das ist aber allgemein bekannt, dass man hier Hand anlegen muss. Das
sehe ich als nicht so problematisch.
Post by Marcus Roeckrath
Du kannst die Ausgabe nicht vom Server beeinflussen.
Ja doch, in dem ich so einfach arbeite, dass es jeder Terminalemulator
versteht. Aber das scheint immer schwieriger zu werden ...

Ich habe auch mit einem anderen Script unter Ubuntu 18.10 massive
Probleme, unter 18.04 lief das noch einwandfrei!

Hier fehlen mit einem mal Parameter zum Aufruf des Standard
Terminalprogramms, aber das ist eine andere Geschichte.
Post by Marcus Roeckrath
eisfair unterstuetzt direkt xterm* und putty* alles andere als
linux, siehe dafuer auch /etc/profile
Ja, aber man kann doch nicht für alle möglichen Ideen hier vorarbeiten.
Das macht aus meiner Sicht keinen Sinn, oder liege ich da falsch?

Und nur das ich nicht falsch verstanden werde, ich beklage mich *NICHT*
über eisfair!

Sondern über die Distri-Vorgaben die da mit einem mal irgendwo
auftauchen und niemand weiß warum!

Und wenn ich dann an den entsprechenden Stellen frage, warum das so ist,
ernte ich nur Schulterzucken!
Und vor allem ist es meist so, dass niemand weiß warum das geändert wurde!

Sorry, ich hab mich gerade in Rage geschrieben, ich hör auf!!
--
Gruß,
Helmut
Marcus Roeckrath
2018-11-28 16:52:24 UTC
Permalink
Hallo Helmut,
Post by Helmut Backhaus
/var/install/bin/update-chk01.sh no &
Wo wird in dem Skript der übergebene Schalter no überhaupt ausgewertet?
--
Gruss Marcus
Marcus Roeckrath
2018-11-29 08:47:04 UTC
Permalink
Hallo Helmut,
Post by Helmut Backhaus
ich habe da ein kleines Problem mit einer Ausgabe.
--->
# Start update-chk01 with option "no" set var
mecho --stdbr "Update Checker is now looking for updates, this will take
a while!"
/var/install/bin/update-chk01.sh no &
script01=$(pgrep update-chk01.sh)
# Checking if script is still running
while [ -n "$script01" ]
do
script01=$(pgrep update-chk01.sh)
mecho --stdbr "Update Checker is still working hard ..."
sleep 20
done
<---
Du möchtest ja eine regelmäßige Ausgabe, damit der User nicht denkt, dass
die Kiste hängt, weil das Sammalen der Infos ziemlich lange dauert.

Ich verwende für diese Zwecke z. B. folgenden Code:

/usr/bin/rsnapshot du 2>&1 >> "${_tmpfile}" &
_pid=$!
while (ps ax | egrep -q "^ *${_pid} ") ; do
mecho --warn -n "."
sleep 1
done
echo

Das pinselt pro Sekunde einen Punkt.
--
Gruss Marcus
Helmut Backhaus
2018-11-29 13:23:13 UTC
Permalink
Hallo Marcus,
Post by Marcus Roeckrath
Hallo Helmut,
Post by Helmut Backhaus
ich habe da ein kleines Problem mit einer Ausgabe.
--->
# Start update-chk01 with option "no" set var
mecho --stdbr "Update Checker is now looking for updates, this will take
a while!"
/var/install/bin/update-chk01.sh no &
script01=$(pgrep update-chk01.sh)
# Checking if script is still running
while [ -n "$script01" ]
do
script01=$(pgrep update-chk01.sh)
mecho --stdbr "Update Checker is still working hard ..."
sleep 20
done
<---
Du möchtest ja eine regelmäßige Ausgabe, damit der User nicht denkt, dass
die Kiste hängt, weil das Sammalen der Infos ziemlich lange dauert.
Letztlich mache ich das Gleiche wie Du.
Nur durchsuche ich nicht die "ps" Ausgabe sondern nehme ein Tool welches
mir genau das liefert was ich brauche, die "pid". Dafür ist "pgrep"
gedacht (aber es kann noch viel mehr). Und da pgrep im Standard auf dem
Eis dabei ist nutze ich es halt.

Aber keine Angst, so schlau bin ich auch wieder nicht, dass habe ich mal
irgendwo bei Holger abgekupfert. :-))

Aber schau Dir mal die Hilfe von pgrep an (pgrep --help), das Teil ist
echt mächtig!
Post by Marcus Roeckrath
/usr/bin/rsnapshot du 2>&1 >> "${_tmpfile}" &
_pid=$!
while (ps ax | egrep -q "^ *${_pid} ") ; do
mecho --warn -n "."
sleep 1
done
echo
Das pinselt pro Sekunde einen Punkt.
Ich hab's probiert, dann stehen die ersten Punkte im Nirwanana. Und wie
soll es anders sein, unter xterm geht es problemlos.
--
Gruß,
Helmut
Marcus Roeckrath
2018-11-29 14:02:41 UTC
Permalink
Hallo Helmut,
Post by Helmut Backhaus
# Start update-chk01 with option "no" set var
mecho --stdbr "Update Checker is now looking for updates, this will take
a while!"
Was ist mit folgender Änderung:

mecho --stdbr -n "Update Checker is now looking for updates, this will take
a while!"
echo
--
Gruss Marcus
Holger Bruenjes
2018-11-29 16:54:17 UTC
Permalink
Post by Helmut Backhaus
Ich hab's probiert, dann stehen die ersten Punkte im Nirwanana. Und wie
soll es anders sein, unter xterm geht es problemlos.
Das ist auch noch ein anderes Beispiel

/dein/script/der/pfad &
echo -n " Update Checker is now looking for updates, this
will take a while!"
while [ -n "$(ps --no-headers $!)" ]
do
for s in / - \\ \|
do
printf "\r[$s]"
sleep .1
done
done
printf "\r"


Holger
Marcus Roeckrath
2018-11-30 17:21:00 UTC
Permalink
Hallo Holger,
Post by Holger Bruenjes
Das ist auch noch ein anderes Beispiel
/dein/script/der/pfad &
echo -n " Update Checker is now looking for updates, this
will take a while!"
while [ -n "$(ps --no-headers $!)" ]
do
for s in / - \\ \|
do
printf "\r[$s]"
sleep .1
done
done
printf "\r"
Warum haben wir sowas nicht in der eislib:

#!/bin/sh

waitanimation () {
pid=$1
type=$2
freq=$3
text=$4
echo -n "${text}"
while [ -n "$(ps --no-headers $pid)" ]
do
case "${type}"
in
windmill)
for s in / - \\ \|
do
printf "\r${text}[$s]"
sleep ${freq}
done
;;
points)
echo -n "."
sleep ${freq}
;;
esac
done
echo
}
--
Gruss Marcus
Loading...