Linuxiarze.pl Forum

Dystrybucje Linux => Ubuntu, Kubuntu, Xubuntu, Lubuntu => Wątek zaczęty przez: lukas60055 w Kwiecień 21, 2017, 12:47:36 PM

Tytuł: Expect linux - Nowy problem
Wiadomość wysłana przez: lukas60055 w Kwiecień 21, 2017, 12:47:36 PM
Mam nowy problem tam to już naprawiłem. Chodzi mi tu o to ze jak mam taki kod:

#!/usr/bin/expect
set timeout -1
spawn multimon-ng -c -a STQC

while {1} {
expect "123456"
exec ./skrypt1

expect "7890"
exec ./skrypt2
}

I wszystko pięknie gra tylko ze działa to tak:
Pokazują się liczby 123456 ok włącza się skrypt1
Pokazują się liczby 7890 też włącza się skrypt2
i tak w kółko

I chodzi tu o to ze jak pierwsze pokażą się liczby "7890" to skrypt2 się nie uruchamia, albo dwa razy "123456" to raz się uruchomi skrypt1 drugi raz nie trzeba potem liczby "7890". Działa to tak jakby z góry na dół i tak w kółko.

Naprawdę prosił bym o pomoc bo tylko to i już mi wszystko będzie działać.
Tytuł: Odp: Expect linux - Nowy problem
Wiadomość wysłana przez: lesio w Kwiecień 21, 2017, 12:58:24 PM
Najpierw napisz, jak usunąłeś błędy poprzednim razem. Warto wiedzieć, gdzie był błąd, bo obawiam się, że expect zachowuje się nieco odmiennie w różnych systemach. Jaki to jest system?
Tytuł: Odp: Expect linux - Nowy problem
Wiadomość wysłana przez: lukas60055 w Kwiecień 21, 2017, 01:15:09 PM
Jest to Linux Ubuntu

Naprawiłem to tak że usunąłem argument -f i spacje dodałem jak masz while {1} {

Teraz nie wiem jak zrobic zeby nie działało to od góry na dół tylko taki kod sie pojawia to dany skrypt ma uruchomic
Tytuł: Odp: Expect linux - Nowy problem
Wiadomość wysłana przez: lesio w Kwiecień 21, 2017, 04:33:37 PM
W każdej pętli wszystko wykonuje się sekwencyjnie, w związku z tym najpierw pierwszy expect oczekuje na "123456" i gdy taki ciąg się pojawi, to wykonuje skrypt1 i teraz kolejny expect oczekuje na ciąg "789" by wykonać skrypt2, po czym wszystko zaczyna się od początku. Aby to działało tak jak chcesz, musiałbyś użyć jednego expecta z dwoma argumentami i następnie analizować, co uruchomić.
Tytuł: Odp: Expect linux - Nowy problem
Wiadomość wysłana przez: lukas60055 w Kwiecień 21, 2017, 04:54:38 PM
A mógłbyś mi pokazać jak ? Jakiś przykład wzór ?
Tytuł: Odp: Expect linux - Nowy problem
Wiadomość wysłana przez: lesio w Kwiecień 21, 2017, 09:53:07 PM
Niestety, expecta używałem bardzo dawno temu (będzie z 20 lat)  w unixie i niewiele pamiętam, natomiast korzystając z manuala - czyli polecenia:
$ man expect
wynika, że dla polecenia expect można podać kilka wzorców. Być może w jakiejś zmiennej środowiskowej jest przechowywany wzorzec, który "załapał" i wtedy w skrypcie można na jego podstawie podjąć jedno lub drugie działanie. Tak więc pozostaje ci polecenie "man" w linuksie i google w przeglądarce ... Na szczęście materiałów w necie jest dużo, tylko trzeba umieć znaleźć ...