wait_out (буфер) не назначается - PullRequest
0 голосов
/ 12 октября 2018

Мне нужна помощь с ожидаемым сценарием, который я пишу, чтобы получить информацию от маршрутизатора, с которым я не могу связаться напрямуюЭто мой код:

    expout=$(
        expect << EOD
                log_user 0
                set timeout 20
                spawn ssh router1
                expect "router1#" { send "ssh -l foo 0.0.0.0\r" }
                expect "Password:" { send "*********\r" }
                expect "router2#" { send "show ip interface br\r \r" }
                set output $expect_out(buffer)
                expect "router2#" { send "exit\r" }
                expect "router1#" { send "exit\r" }
                puts $output
                expect eof
EOD
)

Я ожидаю сохранить эти выходные данные в переменной bash для дальнейшей манипуляции.Если я включаю exp_internal 1 в сценарии, он назначает то, что я хочу, Ожидаем (выход) (буфер) .Можете ли вы сказать мне, если я делаю что-то не так?

Спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Поскольку heredoc не заключен в кавычки, оболочка расширяется $expect_out до пустой строки до того, как ожидает запуска.Тогда ожидайте только видит set output (buffer)

Цитировать heredoc:

expect=$(
    expect << 'EOD'
    # ........^...^
        ... expect code
EOD
)

См. https://www.gnu.org/software/bash/manual/bashref.html#Here-Documents

...