Radosław Napisano Kwiecień 11 Zgłoszenie Share Napisano Kwiecień 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 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Szept Napisano Kwiecień 16 Zgłoszenie Share Napisano Kwiecień 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 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Radosław Napisano Kwiecień 16 Autor Zgłoszenie Share Napisano Kwiecień 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 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się