Schüler von Linuxmuster nach Webuntis exportieren

die students.csv sieht doch so aus:

klasse;Nachname;Rufname;GebDatum;ID

da brauchst du nur noch den usernamen dahinter, oder?

Andererseits: warum brauchst du das GebDatum? Das hat in WebUntis nix verloren. Als identifikationsmerkmal könntest du username oder ID nehmen.

Egal, hier was du machen kannst mit Bordmitteln:

alleklassen=$(sophomorix-class -i | grep '^|' | awk '{print $2}' | sed '/^-/d;/AdminClass/d;$d'  | grep -vE "Class|attic|lehrer" | paste -s -d ",")

dann schau mal, welche klassen da drin sind in echo $alleklassen. Manche magst du sicher noch in die Ausschlussliste hinter „Class|attic|lehrer“ packen, mit | getrennt.

Dann:

sophomorix-print --class $alleklassen --caller kuechel --template /etc/linuxmuster/sophomorix/default-school/latex-templates/datalist-DE-36-template.tex

oder /usr/share/sophomorix/lang/latex/templates/datalist-DE-36-template.tex wenn das bei dir in /etc nicht liegt.

Und dann hast du folgende DAtei hier liegen:

less /var/lib/sophomorix/print-data/multiclass-kuechel_WebUntis-unix.csv

Was da jetzt wiederum fehlt ist das Geburtsdatum. Entweder du killst das aus deinen Anforderungen, weil warum überhaupt?

Oder du musst sophomorix-print „hacken“, damit es das Geburtsdatum noch rauslässt. Das hab ich auch schon gemacht, hier in einer Kopie sophomorix-print:

sub create_csv_files {
    @{ $ref_printlist } = sort @{ $ref_printlist };
    foreach my $item ( @{ $ref_printlist } ){
        my @data=split(/;/,$item);
        my $csv=$data[1]." ".$data[0].";".$data[5].";".$data[2].";".$data[3].";".$data[10].";";
        print CSV $csv."\l\r";
        print UNIXCSV $csv."\n";
        my $webuntis=$data[5].";".$data[0].";".$data[1].";".$data[2].";".$data[6].", ".$data[7].";".$data[10].";";
        print WEBUNIXCSV $webuntis."\n";
        print WEBCSV $webuntis."\l\r";
        my $examplix=$data[0].", ".$data[1].":---:---:".$data[5]."==".
                     $data[0].", ".$data[1].":---:---:".$data[5];
        print EXAMPLIX $examplix."\n";
    }
}

würde ich mal bei my $webuntis probieren, welche daten in $ref_printlist tatsächlich stehen, vermutlich ist das GebDatum auch dabei. Weiter oben finden sich Anhaltspunkte, bevor du raten musst:

...
    # always APPEND to datablock                                                                                                                              
    my @list = @{ $ref_printlist };
    @list = sort @list;
    my $dataline_max=&dataline_max_from_template_path(); # max pp entries                                                                                     
    my $dataline_count=0; # counts pp entries                                                                                                                 
    my $last_count=$#list+1; # number of elements starting with 1,2,...                                                                                       
    foreach my $item (@list){
        my @data=split(/;/,$item);
        my $lastname= &string_to_latex($data[0]);
        my $firstname=&string_to_latex($data[1]);
        my $login=    &string_to_latex($data[2]);
        my $password= &string_to_latex($data[3]);
        my $school=   &string_to_latex($data[4]);
        my $role=     &string_to_latex($data[8]);
        my $workgroup=&string_to_latex($sophomorix_config{'samba'}{'smb.conf'}{'global'}{'workgroup'});
        my $class=&string_to_latex($data[5]);
...