Posts by Bert

    Hi,


    Ja also pidof PID zeigt leider gar nix an, aber ps -aux | grep PID und zwar das:

    Code
    vdr         1833  0.0  0.0 237292  4996 ?        Sl   21:49   0:00 /usr/libexec/geoclue-2.0/demos/agent
    yavdrus+   10364  0.0  0.0   9420   724 tty3     S+   22:11   0:00 grep --color=auto 1833

    Sagt mir aber gar nichts.

    Habe nun mal meine host_vars/localhost einfach gelöscht und das Script mittels "sudo -H ./install-yavdr.sh" gestartet

    dabei kommt auch das Problem mit dem Prozess der blockiert doch in diesem Fall nützt es wenn ich die PID dieses Prozesses kille

    und das Script läuft danach fehlerfrei durch. Mache ich das hingegen mit meiner host_vars/localhost geht das nicht.


    Grub Bootmenü ist auch wieder weg nun, aber ich kanns erreichen beim Start mit der Shifttaste und schnell ne Cursertaste nach unten da der Timeout

    und überhaupt nichts was ich in die /etc/default/grub eintrage greift.

    Das muss ich jetzt mal richtig lösen da das bei einem MultibootSystem nicht günstig ist.


    In meiner host_vars/localhost steht ja z.b:

    Code
    # settings for grub
    grub:
      timeout: 10
      boot_options: quiet splash

    Das würde vermutlich helfen aber mit meiner localhost läuft ja nichts durch (greift also nicht), ich probier mal:

    Code
    cd yavdr-ansible
    sudo -H ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags="grub-config"

    Edit, Das hat geklappt, hätte ich das mal früher gewusst dann hätte ich mir die Prozedur aus Post #7 und vor Allem aus Post #9 erspart.

    Ich versteh das nicht ich will das Script also "sudo -H ./install-yavdr.sh" nochmal laufen lassen doch es kommt immer:

    Code
    TASK [yavdr-common : create vdr user] *******************
    fatal:[localhost] : FAILED! => {
    "changed" : false,
    "name" : "vdr"
    "rc" : 8
    }
    
    MSG:
    usermod : Benutzer vdr wird derzeit von Prozess 11859 verwendet

    Ich habe das nun sicher 7x hintereinander probiert mit auch vorher vdr stoppen, Prozess killen ist jedesmal eine andere PID, Kompletter Neustart

    aber es läuft nie durch (kurz vor dem Fehler wird auch immer der VDR vom Script gestartet).

    Hi,


    Gut also zurück zum eigentlichen Problem, ich häng mal ein bisschen syslog vom Vdr Start an

    (da sieht man schon ein paar Fehler drinnen, kann aber nichts damit anfangen), auch:

    no DVB device found

    steht da unter Anderem - ist wohl auch nicht so gut.

    Vielleicht sieht ja jemand wos hakt.

    syslog_start_vdr_auszug.txt


    Gruss

    Bert

    Hi,


    Danke für die Links - seh ich mir an.

    Hatte es in der Zwischenzeit geschafft die Probleme zu vergrössern ^^

    Habe mittels USB Bootmedium per boot-repair (mit Optionen wie u.a. purge grub usw..) den Grub im yavdr ansible neu installieren können, das hat zwar den Grub Boot-Auswahlbildschirm zurück gebracht doch nun war nur noch yavdr ansible auswählbar - also nicht der grosse Wurf.


    Danach blieb mir nichts anderes übrig als per chroot Methode den Grub vom Kubuntu-20.04 wiederherzustellen was auch geklappt hat, nun konnte

    ich wieder alle drei Betriebssyteme auswählen und auch hochfahren.

    Nun aber steht natürlich als erster Booteintrag im Auswahlbildschirm das Kubuntu-20.04 was ich aber so nicht will, denn wenn ich mal einfach hochfahre soll default (falls ich nichts anderes auswähle) das yavdr ansible hochfahren nach dem Timeout.


    Normalerweise hatte ich wenn sich das durch ein Update vom Kubuntu-20.04 geändert hat immer einfach folgendes getan im yavdr ansible:

    Code
    sudo grub-install /dev/nvme0n1p6  # das entspricht der yavdr partition
    sudo update-grub

    Und danach war wieder yavdr ansible an erster Position im Boot-Auswahlbildschirm.

    Doch seit ich boot-repair verwendet habe findet der Grub im yavdr ansible kein weiteres Bertriebssystem, das ändert sich auch dann nicht wenn

    ich von einem USB Bootmedium (Kubuntu-20.04 Desktop.iso) die chroot Methode um den Grub wiederherzustellen anwende also das mache:

    Code
    sudo mount /dev/nvme0n1p6 /mnt
    sudo mount /dev/nvme0n1p1 /mnt/boot/efi
    for dir in /dev /dev/pts /proc /sys /run; do sudo mount --bind $dir /mnt$dir; done
    grub-install
    update-grub

    Mache ich das selbe oben im Code aber mit /dev/nvme0n1p5 für den Grub im Kubuntu-20.04 werden alle Betriebssyteme gefunden.


    Was kann ich noch tun oder bleibt mir wirklich nichts anderes übrig als die Ubuntu Server Distri und yavdr ansible neu zu installieren?

    Genau das wollte ich eigentlich vermeiden.


    Habe noch eine Reinstallation vom Grub im yavdr ansible selbst versucht aber dabei wird os-probe nicht mehr gefunden nun und es ändert nichts am Problem, vielleicht ist ja genau das das Problem wegen os-probe


    Edit, oh sehe gerade das Paket sollte ja os-prober lauten, wie blöd.

    new Edit, ok Kommando retour - die Grub Probleme sind nun behoben mit einer neuen Reinstallation vom Grub direkt im yavdr ansible diesmal mit dem korrekten Paketnamen also einfach mit:

    Code
    sudo apt-get --reinstall install grub-common grub-efi-amd64 os-prober

    ist wenigstens diesbezüglich alles wieder im Lot.


    Gruss

    Bert

    Hi,


    Ich weiss nicht was das für ein Prozess ist die PID ist jedenfalls immer eine andere, doch das ist nun eh egal denn es hat jetzt plötzlich doch geklappt

    auf ganz normalem Weg also PID killen und das Script ist danach durchgelaufen (Bild und Ton gibts jedoch nicht) nur das Yavdr Logo ist zu sehen.

    Im Moment habe ich aber neue Probleme plötzlich seit dem Ausführen und erfolgreichem Durchlaufen des Scripts sehe ich den BootManager (Grub)

    also das Auswahlfenster nicht mehr.


    Es fährt immer sofort das Yavdr hoch, kann kein anderes Bertriebssystem mehr starten, habe nachgeguckt in der /etc/default/grub und da stand plötzlich das drinnen:

    Code
    GRUB_TIMEOUT_STYLE=hidden
    GRUB_TIMEOUT=0

    Dachte ok das ist das Problem, doch nach Umstellen zu:

    Code
    GRUB_TIMEOUT_STYLE=menu
    GRUB_TIMEOUT=10

    und anschliessendem sudo upodate-grub ändert sich nichts, das Problem bleibt hartnäckig bestehen.

    Macht yavdr da was extra mit grub ich meine gibts da irgendwelche default templates die da dazwischenfunken (bin absolut nicht up-to-date das macht alles schwieriger).

    Hmm, Sript (sudo -H ./install-yavdr.sh) neu angestossen Fehlermeldung ansible Version zu alt

    Also Ordner yavdr-ansible gelöscht, neu aus Git ausgescheckt, wieder Script gestartet.


    Code
    TASK [yavdr-common : create vdr user] *******************
    fatal:[localhost] : FAIKLED! => {
    "changed" : false,
    "name" : "vdr"
    "rc" : 8
    }
    
    MSG:
    usermod : Benutzer vdr wird derzeit von Prozess 11859 verwendet

    sudo apt update

    sudo apt dist-upgrade

    hat das Problem tatsächlich gelöst doch nun kommt der VDR nicht mehr hoch es ist nur noch das blaue yavdr Logo zu sehen

    aber kein Bild vom Sender.

    Hi,


    Eventuell hat das nur bedingt mit yavdr zu tun, aber ich frag mal hier (wenn es hier nicht passt bitte verschieben).

    Habe ein Multiboot System also einmal Win 10, einmal Kubuntu-20.04, und einmal yavdr Ansible, bislang hat alles weitgehends reibungslos geklappt

    und ich konnte alle drei Systeme über Grub booten wobei im Bios unter Boot -> Sicheres Booten immer Uefi Windows eingestellt war.

    Doch neulich habe ich das Kubuntu-20.04 upgedatet (nur Pakete aktualisiert) und nun fährt yavdr nur noch hoch wenn ich im Bios

    bei Boot -> Sicheres Booten auf "anderes Betriebssystem" umstelle.

    Wie das sein kann ist mir nicht klar denn das yavdr Ansible habe ich ja nicht angerührt


    Wie geht das (kann ja eigentlich damit das ich das Kubuntu-20.04 upgedatet habe nichts zu tun haben) ?

    Sollte man das yavdr Ansible ab und zu auch mal updaten um sowas zu vermeiden ? Eventuell liegt das Problem ja genau daran

    weil ich yavdr Ansible bisher noch nie upgedatet habe.


    Wenn ich unter Boot -> Sicheres Booten auf Uefi Windows umstelle kann ich nur noch Win10 und das Kubuntu-20.04 hochfahren, versuche ich so das yavdr Ansible hochzufahren kommt die folgende Meldung: bad shim signature - you need to load the kernel first


    Gruss

    Bert

    Hi seahawk1986,


    Danke, ist auch wenn wackelig trotzdem ne gute Lösung.

    Hatte mir derweil das gebastelt,


    Das klappt gar nichtmal so schlecht (verwende #!/bin/sh) , und ist auch schön kurz, doch mich stört halt das man dabei bei 1-9 immer ne Null zuvor mit angeben muss.


    Gruss

    Bert

    Hi All,


    Hab hier ein komplexeres Script und darin z.b: nen Part wie folgt,

    Code
    echo -e "$green"
    while true; do
        read -p "how many EXTRA_PARTITIONS do you want to create ? " -n 1
        case $REPLY in
            [1-9]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
                * ) echo -e "\n${yellow}please answer with numbers from 1 to 9.${green}\n";;
        esac
    done


    Das funktioniert ja auch wunderbar, doch möchte ich das nun erweitern so das auch eine zweistellige Angabe möglich ist also in etwa so,

    Code
    echo -e "$green"
    while true; do
        read -p "how many EXTRA_PARTITIONS do you want to create ? " #-n 2
        case $REPLY in
            [0-9]|[1-6]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
                * ) echo -e "\n${yellow}please answer with numbers from 1 to 16.${green}\n";;
        esac
    done


    Das klappt auch, doch so kann ich keine Limitierung haben also ich möchte ja nicht mehr als 16 Partitionen erlauben.

    Bei dieser Variante kann ich ja leider auch z.b: 17 wählen, und leider geht das so auch nur mit nachfolgenden Druck auf die Enter Taste.


    Ich hätte also gerne das man nur ne Zahl zwischen 1 - 16 wählen kann und sonst gar nix anderes angeben kann, und am Liebsten

    auch noch ohne danach die Enter Taste drücken zu müssen.


    So klappt das ja bei der obersten Variante, doch eben nur von 1 - 9.


    Wenns dann nur mit z.b: von 01 - 16 klappt und ich so keine Enter Taste drücken muss wäre das auch ok, dann müsste ich danach

    halt noch die führende Null löschen da das komplette Script etwas gross ist mittlerweile und von dieser Auswertung einiges abhängt

    (müsste sonst wieder einiges mehr im Script ändern).


    Hat jemand ne Idee ?


    EDIT !

    Also so ginge es fürs Erste,

    Code
    echo -e "$green"
    while true; do
        read -p "how many EXTRA_PARTITIONS do you want to create ? " -n 2
        case $REPLY in
            [0][1-9]|[1][0-6]* ) EXTRA_PARTITIONS=$REPLY && echo -e "\nchosen was -> ${blue}$EXTRA_PARTITIONS${green}\n" && break;;
                * ) echo -e "\n${yellow}please answer with numbers from 01 to 16.${green}\n";;
        esac
    done


    Gäbe es ne schönere Lösung als mit führender Null und dennoch nicht die Enter Taste zu benötigen

    (egal ob ein oder zweistellige Eingabe) ?


    Gruss

    Bert

    Hi,


    Ihr seid super :)

    Das haut soweit alles hin nun, das von rfu mit dem export (an das hab ich nicht mal gedacht), sieht jetzt insgesamt wie folgend aus

    wobei ich das mit dem Code von FireFly getestet habe, also so:


    Auch das von HelmutB mit eval haut super hin, sieht so aus:


    Also alles super, nun muss ich noch gucken mit nem array wie von seahawk1986 vorgeschlagen, aber sind jetzt schon schöne kurze Lösungen.

    Hab ja schon öfters mal arrays in Scripts eingebaut aber noch nicht für so nen Fall (steh da immer noch am Schlauch) aber das wird schon noch.


    Vielen Dank an alle Beteiligten hier :] kann man nun eigentlich als gelöst betrachten den Thread.



    Gruss

    Bert

    Hi Jungs,


    Das sind alles schöne Ansätze, aber ich steh dennoch immer wieder vor dem selben Problem.

    Ich versuch das jetzt mal besser bzw. genauer zu erklären was ich eigentlich will, es ist wie folgt;


    Ich möchte in ner Schleife interaktiv die size abfragen wobei die size is nix anderes als ne Grösse die man eingibt in Form von Zahlen

    und zwar soll das die Grösse in KiB darstellen.

    wie oft die size abgfragt wird das wiederum hängt von der Variablen parts ab, also z.b: wenn

    parts=4

    dann wird die size 4x abgefragt, bis hierher keinerlei Problem

    doch möchte ich mittels nem Zähler der mit (z=1) anfängt pro Schleifendurchlauf an die variable size ne Nummer anhängen.


    also wenn nun size gefüllt ist mit z.b: 5555555 so das echo "$size" eben 5555555 ausgibt möchte ich diese Variable (jetzt mal grob gesagt)

    quasi umbenennen so das size nachher size_1 ist und echo $size_1 die 5555555 ausgibt.

    Beim nächsten Schleifendurchlauf wird dann der Zähler erhöht mit z=$((z+1)) und dann sollte aus size mit was immer diese Variable nun gefüllt wurde

    size_2 werden usw...


    Hab da ziemlich einfach gedacht und dachte das kann doch in der bash nie ein Problem sein und es würde das folgende genügen,

    also wenn da nun wie von FireFly statt der REPLY variablen value verwendet wird:

    Code
    read -n 7 -p "please enter the size in KiB for size[$i]: "  value

    dann dachte ich, ok ich mach mal:

    Code
    size_${z}=$value

    doch das klappt ja nicht.


    Dank FireFly weiss ich nun das sowas stattdessen klappt:

    Code
    size[$z]=$value

    doch ist das ja dennoch keine Variable die ich so weiter verwenden kann, denn ein echo $size[$z] gibt ja jetzt lediglich den Zähler aus

    also die variable z und das in eckigen Klammern.


    Vereinfacht gezeigt sieht man das Problem wie folgt am Besten denke ich:


    klappt nicht:

    Code
    size=5555555
    z=3
    $size${z}=$size
    -bash: 55555553=5555555: command not found

    hingegen ohne variable für den Zähler (z) klappt das problemlos:

    Code
    size=5555555
    size_3=$size
    echo $size_3
    5555555


    Ich hab ne Lösung aber die benötigt keinerlei array, und braucht aber zwei while Schleifen sowie ein case und innerhalb vom case ein paar if elif Abfragen also so:

    Code
    if [ "$z" = "1" ] ; then
        size_1=$size
    elif [ "$z" = "2" ] ; then
        size_2=$size
    usw...


    Das klappt dann natürlich, allerdings hatte ich gehofft das kürzer hinzubekommem, ich bin nicht sicher ob sowas mit nem array und ohne den ifs

    hinzubekommen ist, doch wenn das ginge würd ich gerne wissen wie ?



    Hier mal meine derzeitige Lösung:

    wobei die Variable parts und DEV usw.. frage ich eh auch bereits an anderer Stelle interaktiv ab (das hier ist halt nur der relevante Codeschnipsel

    und damit der funktioniert (falls den jemand testen will - Script tut eh nix wirkliches bzw. gefährliches) hab ich diese Variablen derweil so darin vorgegeben.


    und so sieht das bei der Ausführung aus:


    Gruss

    Bert

    Hi seahawk1986,


    Danke.


    Dann mach ich aber irgendwas anderes falsch denn ich habs auch mit nem array probiert, mein Beispiel in Post 1 war auch nicht grade optimal gewählt.

    Also ich hatte mit array das probiert;



    Ich will halt am Ende da in dem Fall parts=4 vier Variablen haben in etwa so;


    size_1=5555555

    size_2=4444444

    size_3=3333333

    size_4=2222222


    so als ob diese Variablen fix im Script eingetragen wurden also das dann z.b: ein echo $size_1 als Ergebnis 5555555 ausgibt.

    Das gelingt mir nicht (read akzeptiert da einfach kein Dollarzeichen also ne bereits gefüllte Variable), ich könnte da ja auch REPLY nehmen stattdessen

    aber das hab ich alles schon probiert und hat mich auch nicht weitergebracht (hab wohl irgendwo nen Denkfehler).


    Klar es gibt auch andere Lösungen ich will das aber so kurz wie möglich halten, das Script oben gibt dann das aus:

    Code
    bash /usr/script/_testing.sh
    please select the size in KiB for size_1 ?5555555
    
    please answer with numbers from 0 to 9.
    
    please select the size in KiB for size_1 ?


    das geht leider völlig daneben wie man sieht.

    Das mit dem bei 0 anfangen beim array dagegen kann man eh was tun, aber das ist erstmal nur sekundär für mich.


    Ich hatte es auch schon soweit das size_1 size_2 usw.. korrekt abgefragt wurden aber die Variablen waren danach dennoch falsch gefüllt.



    Gruss

    Bert

    Hi,


    Hätte ne Frage wie folgt;


    in der Konsole;

    Code
    c=1
    var=text
    mappe_1=$var
    echo $mappe1


    Code
    echo $mappe_1
    text


    bis hierher alles klar, doch warum geht das folgende nicht;

    Code
    mappe_$c=$var
    -bash: mappe_1=text: command not found

    ist sowas überhaupt machbar ?



    Gruss

    Bert

    Hi,


    Also ich kann zumindest sagen das der fsck auch bei ner halbvollen 2Tb Platte echt sehr schnell erledigt ist (paar MInuten)

    was mit ext3 aber doch noch sehr viel länger gedauert hat (mindestens 50 MInuten).

    Ist jetzt aber aus der Erinnerung geschrieben und war noch mit yavdr-0.6 und mit der Maschine aus meiner Signatur

    (die aber veraltet ist und jetzt nicht mehr gültig ist).



    Gruss

    Bert