Я пытаюсь выполнить сценарий expect
с петлей, которая пытается подключиться в ssh
и посмотреть, возможно ли это (хороший пароль и доступный). Я попытался поместить результат в переменную, но записывается только конец stdout и не все stdout. Как я могу это сделать?Сценарий Expect и Bash
result=$(
(/usr/bin/expect << EOF
spawn ssh [email protected]$ip -o StrictHostKeyChecking=no
set timeout 2
expect ":"
send -- "$password\r"
expect ">"
send -- "show clock\r"
expect ">"
EOF
) 2>&1)
спасибо.
Можете ли вы уточнить, что вы имеете в виду (re: «записано только конец записи stdout, а не все stdout»)? tly в вашем выходе, что вы * ожидаете *, чтобы быть в своем выходе, и как вы проверяете? (Часто люди делают что-то вроде «echo $ result», который скрывает фактический контент). –
Если я пишу: echo $ result Показывается только часть последней строки. – 77140B
'declare -p result', как правило, лучший способ увидеть фактическое содержимое переменной - множество способов« эхо »может испортить вещи. Если есть вероятность, что скрытые символы перепутали вещи, 'printf '% q \ n'" $ result "также является улучшением. Но если вы * собираетесь использовать 'echo', по крайней мере, не оставляйте свои кавычки:' echo '$ result "', а не 'echo $ result'. –