Erwarten - Variable vom Bildschirmbereich basierend auf Zeile und Spalte abrufen

Ich interagiere automatisch mit einer SSH-Sitzung und einem ERP-Programm mit Expect.

Anstatt sich auf einen regulären Ausdruck zu verlassen, um eine Variable in meinem Expect-Skript zu erfassen, ist es möglich, nach einem bestimmten Tastendruck eines Benutzers einen Bildschirmbereich, beispielsweise ein Feld, in eine Variable im Code zu erfassen? Senden Sie dem Server einige andere Befehle und senden Sie das Feld erneut?

Angenommen, eine Bestellnummer ist bei 6, 12, 6, 18 enthalten (wobei 6 die Zeile und 12-18 die Spalten sind) und enthält meine 6-stellige Bestellnummer. Ich möchte diese Bestellnummer aus Zeile 6, Spalte 12 bis 18 erhalten und sie in eine Variable kopieren. Erlauben Sie dem Benutzer, noch mehr zu interagieren (oder erwarten Sie einen Wechsel in ein anderes Menü), und senden Sie dann die Bestellnummer erneut in einem anderen Menü.

Meine Frage lautet also: Befindet sich der Inhalt des aktuellen Bildschirms in einem Puffer? (nicht die gesamte Sitzung) Können Sie nur ein bestimmtes Datenelement extrahieren, das nur in diesem Zeilen- und Spaltenbereich auf dem Bildschirm vorhanden wäre?

Beispiel Pseudocode:

#!/usr/bin/expect -f
set env(TERM) vt100
spawn ssh -Y user@domain
#... set user/pass and other vars...
#... send commands to log into ERP
#don't time out
set timeout -1 
        interact {
                -reset $CTRLZ {exec kill -STOP [pid]}
                $CTRLA   {   
                        exp_send "menu_address\ry\r"
                }
                $CTRLO   {   
                        #...acquire order number variable...
                        #...some code I don't understand yet...

                        exp_send "menu_exit_sequence\r"
                        exp_send "menu_address\r"
                        exp_send $ordernumvar

                }
                ~~
        }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage