Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Bash Вывести Vid:Pid USB модема https://www.cyberforum.ru/shell/thread2582244.html
Имеется практическая задача: написать скрипт автонастройки подключения USB-модемов В числе прочего для начала требуется узнать vid:pid воткнутого модема. Итак, задача сводится к выводу и...
Bash Как именно работает Fork бомба
Доброго времени суток, я новичок и не особо знаком с shell скриптами, но вот попалась мне такая функция :(){ :|: & };:. Прогуглив форумы, я понял, что на самом деле это функция которая вызывает две...
Bash Определить Web-сервер сайта
Всем доброго времени суток, начал изучать bash скрипты и не могу решить задачку с следующими условиями Используя Chrome DevTools определить какой web-сервер используется на сайте...
Bash Вывести в консоль текущее время с заданным интервалом Всем доброго времени суток, начал изучать bash скрипты и не могу решить задачку с следующими условиями Используя командную строку в unix консоли, напишите команду которая каждые 20 секунд будет... https://www.cyberforum.ru/shell/thread2580887.html
Bash Скрипт проверки заданного слова на WEB-странице https://www.cyberforum.ru/shell/thread2580886.html
Всем доброго времени суток, начал изучать bash скрипты и не могу решить задачку с следующими условиями Напишите скрипт или автоматический тест или команду в unix консоли, который проверить что на...
Не устанавливаются переменные через скрипт Bash
Всем привет. На CentOS 8 создал sh скрипт: echo "Config var" export DMM_VAR="MY_TEST_VALUE" если выполняю всё через консоль, то всё нормально работает, если выполняю через скрипт, то...
Bash Как сделать backup архива
Подскажите, как создать бэкап архива из трех файлов. вот мой набросок touch ~/$1 cp ~/$1 $2/3_file cp ~/$1 $2/2_file cp ~/$1 $2/1_file chmod go-rwx $2/3_file chmod go-rwx $2/2_file
Bash Копировать и назначить определенные имена файлам Добрый день. Возникла задача. Помогите пожалуйста решить. В одной директории находится несколько папок (количество может быть разное), у которых имя имеет 4-х значный код (например 0032), а в... https://www.cyberforum.ru/shell/thread2579263.html
Bash Snapshots в Git https://www.cyberforum.ru/shell/thread2578970.html
В Pro Git (Scott Chacon, Ben Straub, Version 2.1.194, 2020-01-16) читаю: Remember that each file in your working directory can be in one of two states: tracked or untracked. Tracked files are files...
Bash Сортировка, копироваине и переименование файлов по списку Ребята помогите решить такую задачу. Она состоит из двух этапов. Выполнима ли она? 1) В древовидном каталоге присутствуют файлы с именами типа ????*.* (Это только пример: 00011_01, 0001_02,... https://www.cyberforum.ru/shell/thread2578600.html
Sikrest
0 / 0 / 0
Регистрация: 16.08.2019
Сообщений: 11
0

Цикл While в Expect

11.02.2020, 13:32. Просмотров 976. Ответов 6
Метки (Все метки)

Приветствую.
Есть проблема с циклом While.

Суть задачи (проблемы): при появлении надписи "---- More ----" в консоли нажимать пробел нужное кол-во раз (пока перестанет появляться "---- More ----").
Если нужно нажать 1 раз это не проблема, но вот когда нужно не известное кол-во раз... Не знаю как правильно написать цикл что бы сработал Ниже последний не рабочий вариант на котором остановился.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
 
HOSTS=$(< /home/user/scripts/hosts.txt)
USR="LOGIN"
PWD="PASS"
#Файл логов:
    LOG="ssh_conn.log"
#Цикл переборки хостов и подключение
    for IP in $HOSTS
    do
#Вывод даты старта скрипта:
    echo START SCRIPT: >> $LOG
    date +%x-%R >> $LOG
#Команды для expect:
    COMM="
#Включение и вывод отладки expect:
    log_file debug.log
    exp_internal 1
#Время ожидание expect
    set timeout 9
#Соединение ssh
    spawn ssh $IP
    expect \"*(yes/no)?*\" {send \"yes\r\"}
    expect \"password:\"
    send \"$PWD\r\"
#Выполняемые команды:
    expect \"*>\"
    send \"dis int brief\r\"
    while {expect{
    \"*---- More ----*\" {send \" \"}
    }}
    expect \"*>\"
    send \"quit\r\"
#Завершение выполнения expect:
    expect eof
    "
#Запуск expect с набором команд:
    expect -c "$COMM" >> $LOG
#Вывод разделителя:
    echo ========================================================================= >> $LOG
done
Код отладчика после выполнения кода выше

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
wrong # args: should be "while test command"
    while executing
"while {expect{
        "*---- More ----*" {send " "}
        }}"
argv[0] = expect  argv[1] = -c  argv[2] = 
#pect:
        log_file debug.log
        exp_internal 1
#xpect
        set timeout 9
#h
        spawn ssh 
        expect "*(yes/no)?*" {send "yes\r"}
        expect "password:"
        send "PASS\r"
#
 
        expect "*>"
        send "dis int brief\r"
 
        while {expect{
        "*---- More ----*" {send " "}
        }}
 
        expect "*>"
        send "quit\r"
#pect:
        expect eof
          
set argc 0
set argv0 "expect"
set argv ""


Вернуться к обсуждению:
Цикл While в Expect
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2020, 13:32
Готовые ответы и решения:

TCL, Expect
Как можно одновременно подключиться к нескольким машинам по SSH используя Expect-скрипт. Моя идея...

Expect запуск bash
/usr/bin/expect &lt;&lt;EOF spawn ssh -p 22 $userloc@$ip expect &quot;password&quot; send...

Invalid command name в expect
Всем привет, написал скрип который должен по идее в telnet включать логи и слушать их: #!/bin/bash...

EXPECT передача переменной скрипту
Здравствуйте. Как реализовать передачу переменной скрипту. Ну например есть скрипт: ...

6
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.