#44
2010-09-23, 18:05:16
Es geht um folgendes:
Ich habe mir ein Shellscript gebastelt, das mir für meine VMs aptitude startet, so dass ich im Regelfall nur noch bei der Nachfrage zur Paketbestätigung etwas (y/n) tippen muss:
#!/bin/bash
veids=`sudo vzlist -Ho veid` # listet die blanken veids auf
for i in $veids
do
echo -e "\n------------------------------ updating veid $i ------------------------------\n"
sudo vzctl exec $i "aptitude update && aptitude safe-upgrade" | sed "s/^/Container $i: /"
done
Der Teil, der die Ausgabe nun durch sed piped ist das Problem. Da sed nur ganze Zeilen bearbeitet, sieht das jetzt so aus:
-------------------- updating veid 107 --------------------
[...]
Container 107: The following packages will be upgraded:
Container 107: libssl0.9.8
Container 107: 1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Container 107: Need to get 2860kB of archives. After unpacking 65.5kB will be used.
y
Container 107: Do you want to continue? [Y/n/?] Get:1 http://fr.archive.ubuntu.com hardy-updates/main libssl0.9.8 0.9.8g-4ubuntu3.10 [2860kB]
Die Zeile, die eigentlich die Nachfrage enthält, wird so lange zurückgehalten, bis ich Enter drücke, da sie erst dann eine vollständige Zeile ist. Sie taucht also erst nach der Eingabe auf!
Die Anzeige der Downloadgeschwindigkeit funktioniert auch nicht, scheinbar weil die Ausgabe nicht direkt auf der Konsole erfolgt sondern nach sed. Es scheint auch noch andere Probleme zu geben, zumindest bekam ich eben folgende Meldung:
dpkg-preconfigure: unable to re-open stdin:
Was bei ncurses Dialogen, die ja auftauchen könnten, passiert weiss ich auch nicht.
Gibt es also eine andere Möglichkeit, vor die Ausgabe (von aptitude) in jede Zeile "Container [veid]: " zu schreiben? Oder muss ich damit leben, dass ich nur meine "Überschrift" zwischenrein schreiben kann? Das könnte ich ja zwischen update und safe-upgrade wiederholen, aber anders wäre es mir lieber. Denn gerade wenn mehrere Pakete aktualisiert werden kommt viel Text hinzu und die Überschrift verschwindet...
Ich habe mir ein Shellscript gebastelt, das mir für meine VMs aptitude startet, so dass ich im Regelfall nur noch bei der Nachfrage zur Paketbestätigung etwas (y/n) tippen muss:
#!/bin/bash
veids=`sudo vzlist -Ho veid` # listet die blanken veids auf
for i in $veids
do
echo -e "\n------------------------------ updating veid $i ------------------------------\n"
sudo vzctl exec $i "aptitude update && aptitude safe-upgrade" | sed "s/^/Container $i: /"
done
Der Teil, der die Ausgabe nun durch sed piped ist das Problem. Da sed nur ganze Zeilen bearbeitet, sieht das jetzt so aus:
-------------------- updating veid 107 --------------------
[...]
Container 107: The following packages will be upgraded:
Container 107: libssl0.9.8
Container 107: 1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Container 107: Need to get 2860kB of archives. After unpacking 65.5kB will be used.
y
Container 107: Do you want to continue? [Y/n/?] Get:1 http://fr.archive.ubuntu.com hardy-updates/main libssl0.9.8 0.9.8g-4ubuntu3.10 [2860kB]
Die Zeile, die eigentlich die Nachfrage enthält, wird so lange zurückgehalten, bis ich Enter drücke, da sie erst dann eine vollständige Zeile ist. Sie taucht also erst nach der Eingabe auf!
Die Anzeige der Downloadgeschwindigkeit funktioniert auch nicht, scheinbar weil die Ausgabe nicht direkt auf der Konsole erfolgt sondern nach sed. Es scheint auch noch andere Probleme zu geben, zumindest bekam ich eben folgende Meldung:
dpkg-preconfigure: unable to re-open stdin:
Was bei ncurses Dialogen, die ja auftauchen könnten, passiert weiss ich auch nicht.
Gibt es also eine andere Möglichkeit, vor die Ausgabe (von aptitude) in jede Zeile "Container [veid]: " zu schreiben? Oder muss ich damit leben, dass ich nur meine "Überschrift" zwischenrein schreiben kann? Das könnte ich ja zwischen update und safe-upgrade wiederholen, aber anders wäre es mir lieber. Denn gerade wenn mehrere Pakete aktualisiert werden kommt viel Text hinzu und die Überschrift verschwindet...