Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum zapoznaj się z kilkoma zasadami savoir-vivre'u w wątku Administracja-> Przywitaj się. Wątki z problemami zamieszczone w dziale "Przywitaj się" będą usuwane.

Autor Wątek: Expect linux - Nowy problem  (Przeczytany 108 razy)

Offline lukas60055

  • Newbie
  • *
  • Wiadomości: 4
Expect linux - Nowy problem
« dnia: 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ć.

Offline lesio

  • Sr. Member
  • ****
  • Wiadomości: 287
Odp: Expect linux - Nowy problem
« Odpowiedź #1 dnia: 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?

Offline lukas60055

  • Newbie
  • *
  • Wiadomości: 4
Odp: Expect linux - Nowy problem
« Odpowiedź #2 dnia: 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

Offline lesio

  • Sr. Member
  • ****
  • Wiadomości: 287
Odp: Expect linux - Nowy problem
« Odpowiedź #3 dnia: 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ć.

Offline lukas60055

  • Newbie
  • *
  • Wiadomości: 4
Odp: Expect linux - Nowy problem
« Odpowiedź #4 dnia: Kwiecień 21, 2017, 04:54:38 pm »
A mógłbyś mi pokazać jak ? Jakiś przykład wzór ?

Offline lesio

  • Sr. Member
  • ****
  • Wiadomości: 287
Odp: Expect linux - Nowy problem
« Odpowiedź #5 dnia: 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źć ...