Hilfe zu 'dialog' Konstrukt... ich peils net ^^

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von -eraz-, 02.06.2010.

  1. #1 -eraz-, 02.06.2010
    Zuletzt bearbeitet: 02.06.2010
    -eraz-

    -eraz- Tripel-As

    Dabei seit:
    27.03.2008
    Beiträge:
    151
    Zustimmungen:
    0
    Ich bau gerade mein erstes Skript mit dialog. Hatte bis jetzt auch nen guten Lauf, aber jetzt komm ich grad nicht mehr weiter. Im brauche ein Inputmenu mit mehreren Feldern. Dazu gibt es auch passende Samples. Aber ich steig nicht ganz durch was da genau passiert, kann mir das vielleicht jemand erklären?

    Hier das Sample das mit dabei ist:
    Code:
    #! /bin/bash
    # $Id: inputmenu,v 1.6 2004/09/19 17:59:14 tom Exp $
    # 2002 - written by Tobias Rittweiler <tobrit@freebits.de>
    : ${DIALOG=dialog}
    
    user="$USER"    ; uid="$UID"   ;
    gid="$GROUPS"  ; home="$HOME"  ;
    
    while [ ${returncode:-99} -ne 1 -a ${returncode:-99} -ne 250 ]; do
           exec 3>&1
           value=$("$DIALOG" --clear --ok-label "Create" \
                              --backtitle "An Example for the use of --inputmenu:" \
                              --inputmenu "Originally I designed --inputmenu for a \
    configuration purpose. Here is a possible piece of a configuration program. \
    " 20 50 10 \
    "Username:" "$user" \
    "UID:"      "$uid" \
    "GID:"      "$gid" \
    "HOME:"     "$home" \
    2>&1 1>&3 )
           returncode=$?
           exec 3>&-
           case $returncode in
           1)
                   "$DIALOG"  --clear --backtitle "An Example for the use of --inputmenu:" \
                                   --yesno "Really quit?" 10 30
                   case $? in
                           0) break;;
                           1) returncode=99;;
                   esac
                   ;;
           0)
                   "$DIALOG" --clear --backtitle "An Example for the use of --inputmenu:"  \
                            --msgbox "useradd \n\
                                    -d $home \n\
                                    -u $uid \n\
                                    -g $gid \n\
                                    $user" 10 40
                   ;;
           3)
                   value="${value:8:${#value}}"
                   tag="${value%:*}"
                   item="${value#*: }"
    
                   case "$tag" in
                           Username) user="$item";;
                           UID) uid="$item";;
                           GID) gid="$item";;
                           HOME) home="$item";;
                   esac
                   ;;
    
           255)
                    echo "ESC pressed."
                    break
                    ;;
    
           esac
    done
    
    Wie die Schleife mit dem $returncode funktioniert versteh ich eigentlich am wenigsten.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 02.06.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    Du meinst returncode, ich hab jetzt erstmal nach nem "exit 3" statement gesucht. ;)

    Das hat nichts mit Arrays zu tun, es sei denn du betrachtest einen String als einen Character Array.

    Du solltest dir dafuer parameter expansion mal angucken. Z.B.:
    http://tldp.org/LDP/abs/html/refcards.html#AEN22102
    http://www.network-theory.co.uk/docs/bashref/ShellParameterExpansion.html

    Vielleicht hilft ja dieses Beispiel:
    Code:
    $ value="12345678: foo:bar"
    $ echo ${value:8:${#value}} # substring von position 8 bis string_ende
    : foo:bar
    $ echo ${value#*: }
    foo:bar
    $ echo ${value%:*}
    12345678: foo
    
    Code:
    while [ ${returncode:-99} -ne 1 -a ${returncode:-99} -ne 250 ]; do
    
    Auf Deutsch: Solange $returncode (default 99) nicht 1 und nicht 250 ist, wiederhole folgendes...

    mfg,
    bytepool
     
  4. #3 -eraz-, 07.06.2010
    Zuletzt bearbeitet: 07.06.2010
    -eraz-

    -eraz- Tripel-As

    Dabei seit:
    27.03.2008
    Beiträge:
    151
    Zustimmungen:
    0
    Danke für die Links, die werd ich mir mal zu Gemüte führen.

    Jetzt hab ich leider grad ein kniffliges Problem. Ich hab per dialog eine form erstellt, nachdem man die form ausgefüllt hat, soll eine Passwortabfrage kommen. Danach soll's wieder normal weitergehen. Die Form soll von der Passwortabfrage nicht überschrieben werden. Leider bekomme ich da aber Probleme mit den Rückgabewert der Form wenn ich es so mache:

    Code:
       dialog --keep-window --backtitle "$title" --title "  Domänenjoin  " --help-button --ok-label "Weiter" --cancel-label "Zurück" \
             --form "
            Bitte befüllen Sie alle Zeilen. \n"  20 57 0 \
            "Domain:"               1 2 "$domain"           1 20 30 0\
            "Domaincontroller:"     2 2 "$domaincontroller" 2 20 30 0\
            "SRVAdmin:"             3 2 "$srvadmin"         3 20 30 0\
            "DomainAdmin:"          5 2 "$domainadmin"      5 20 30 0 2>>$tempfile \
            --and-widget --clear --insecure --passwordbox "Passwort Domänenadmin:" 8 30 $domainpwd 2>>$tempfile \
    
       retval=$?
       case $retval in
          0)
    
    Entweder: Wie bekomme ich den Rückgabewert von der Form??
    Oder: Kann ich das Passwort irgendwie anders abfragen ohne die Form zu "Übermalen"?
     
  5. #4 bytepool, 07.06.2010
    Zuletzt bearbeitet: 07.06.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    so wie ich die manpage verstehe ist das nicht moeglich. Allerdings denke ich auch dass die Programmlogik fehlerhaft ist. Da die Passwortabfrage bedingungslos ist, macht es fuer mich deutlich mehr Sinn die Abfrage vor dem zeigen der Form zu machen. Ansonsten kaeme ich mir als User ein wenig verarscht vor, wenn ich mir erst die Muehe mache alles fein auszufuellen, nur um dann eine PW Abfrage vor die Nase gesetzt zu bekommen, auf die ich keine Antwort habe.

    Wenn die Abfrage wiederum nicht bedingungslos ist, also abhaengig von der ausgefuellten Form, macht es IMHO mehr Sinn die Form erst auszuwerten, und dann die Abfrage zu bringen.

    Edit:
    Es sei denn du bereitest dich auf eine neue Stelle als BPFH vor, dann bist du sicherlich auf dem richtigen Weg, nur Uebung macht den Meister. ;)

    mfg,
    bytepool
     
  6. #5 -eraz-, 07.06.2010
    Zuletzt bearbeitet: 07.06.2010
    -eraz-

    -eraz- Tripel-As

    Dabei seit:
    27.03.2008
    Beiträge:
    151
    Zustimmungen:
    0
    Was ist ein BPFH? ^^
    Da hast du natürlich Recht. Deshalb bräuchte ich vorher den Rückgabewert der Form um ein wenig Code auszuführen der befüllte Spalten in eine Variable schreibt (siehe $domain $domaincontroller usw.)
    Noch dazu kommt leider das Problem, dass wenn der Benutzer auf "Zurück" klickt er ebenfalls das Passwort eingeben muss, sehr sinnlos...

    Ansonsten würde sich die Abfrage dort super einfügen. :think:
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 bytepool, 08.06.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,
    ein Bastard Programmer From Hell, in Anlehnung an den BOFH. ;)

    Aber warum machst du da dann nicht einfach 2 Dialoge von? Nur weil es nicht schoen genug aussieht? Dann wuerde sich dein Problem, wie ich es verstehe, in Luft aufloesen.

    mfg,
    bytepool
     
  9. -eraz-

    -eraz- Tripel-As

    Dabei seit:
    27.03.2008
    Beiträge:
    151
    Zustimmungen:
    0
    Ja, nur wegen der Schönheit, was macht man nicht alles dafür. :D
    Nein also wenn mir nix anderes mehr einfällt, dann muss ich es eh in zwei Teile aufsplitten.
     
Thema:

Hilfe zu 'dialog' Konstrukt... ich peils net ^^

Die Seite wird geladen...

Hilfe zu 'dialog' Konstrukt... ich peils net ^^ - Ähnliche Themen

  1. Hilfe.

    Hilfe.: Hallo ich habe centos 7.2.15.11 Ich habe die .rpm Dateien von Epson direkt installiert, aber sonst nichts. Nachdem ich im Terminal...
  2. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  3. [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

    [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter: Hallo zusammen, ich bin an einem Punkt angekommen, wo ich nicht mehr weiter komme und hoffe ihr könnt mir weiter helfen. Anbei ein Ausschnitt aus...
  4. Benötige Hilfe- Dateien vergleichen

    Benötige Hilfe- Dateien vergleichen: Hallo, für eine Arbeit an der Uni muss ich einige viele Bilder miteinander vergleichen, was ich gerne durch eine Automatisierung etwas...
  5. Anfänger braucht Hilfe bei DVB-S Installation

    Anfänger braucht Hilfe bei DVB-S Installation: Hallo, ich habe ein Problem. Ich habe openSuse 13.2 frisch installiert. Jetzt soll ein usb-TV-Modul TEVII s660 funktionieren. Ich kann bereits...