Radosław Posted April 11 Report Share Posted April 11 Kontynuacja innego tematu o wysyłaniu znaku "y" i enter do terminala do interaktywnej komendy. Jeśli jest komenda interaktywna jak: dnf check-update <lista pakietów do aktualizacji> która kończy się pytaniem [y/N] to nie jestem w stanie analizować pojawiającego się tekstu (np. | grep -q "[y/N]" ) dopóki nie zakończę wybierając "y" lub domyślne Enter dla "N". Jak przechwycić pojawienie się [y/N] w terminalu? Przechwycić, aby wyświetlić pytanie kdialog --yesno. Radek Glebicki Link to comment Share on other sites More sharing options...
Szept Posted April 16 Report Share Posted April 16 Narzędzie expect. #!/usr/bin/expect # Uruchom polecenie, np. dnf check-update <lista pakietów> # Możesz przekazać argumenty do skryptu set cmd [lindex $argv 0] set args [lrange $argv 1 end] # Uruchom program w pseudoterminalu eval spawn $cmd $args # Oczekuj na pytanie (dopasuj wzorzec do tego, co faktycznie wyświetla dnf) expect -re {\[y/N\]} { # Pytanie się pojawiło – pokaż okno kdialog # --yesno zwraca 0 dla Tak, 1 dla Nie set user_choice [exec kdialog --yesno "Czy chcesz kontynuować?"] if {$user_choice == 0} { send "y\r" # wyślij 'y' i Enter } else { send "\r" # sam Enter = domyślnie N } } # Przekaż dalsze wyjście programu (np. listę pakietów) na stdout # i poczekaj na zakończenie expect eof Zapisujesz jako dnf-with-kdialog.exp uruchamiasz ./dnf-with-kdialog.exp "dnf check-update" pakiet1 pakiet2 spawn tworzy nowy proces z przypisanym PTY.expect czyta wyjście z tego PTY (łącznie z pytaniem).Gdy wzorzec zostanie dopasowany, możesz uruchomić dowolne polecenie zewnętrzne (exec kdialog ...).Na podstawie odpowiedzi użytkownika wysyłasz dane z powrotem do PTY (send). Odpal sobie dowolną AI, to ci będzie pomagać w takich rzeczach. 1 Link to comment Share on other sites More sharing options...
Radosław Posted April 16 Author Report Share Posted April 16 Czytałem o "expect". Trochę mnie przerosło zrozumienie działania. Tutaj jest wytłumaczone. Dzięki. Ok, pytanie. Jak niby miało by wyglądać zapytanie dla AI do wygenerowania takiej odpowiedzi jak powyższa? Radek Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now