Решение Стефана очень элегантное, но если вы не хотите каждый раз загружать и анализировать пароль, вы можете сохранить свой двухэтапный процесс с помощью чего-то вроде этого:
Измените команду восстановления пароля на эту:
sed -e '$ d' -i.bak f && echo -n "send -- \"" >> f && lynx --dump --nolist vpnbook.com/freevpn | grep -i password | sort -u | cut -b 18-24 >> f && echo "\\r\"" >> f
Для краткости я назвал файл ожидаемого скрипта f
. На самом деле это должен быть полный /path/to/your/expect/script
, если только вы уже не находитесь в том же каталоге, что и скрипт.
Затем вызовите ожидаемый скрипт, как обычно.
В разобранном виде расширенная команда работает следующим образом:
sed -e '$ d' -i.bak f
Найдите последнюю строку($
)в f
и удалите ее(d
). Будьте осторожны с переключателями -e
и -i
-, они разные/не поддерживаются на некоторых платформах. -e
явно указывает команду, когда используется переключатель -i
, а -i
означает изменение файла в месте -, сохраняя резервную копию с расширением .bak
.
&&
выполнить следующую команду, если предыдущая выполнена успешно.
echo -n "send -- \"" >> f
Добавить в файл(>> f
)без новой строки(-n
)первую часть функции ожидания отправки.
lynx...
Ваша исходная команда, за исключением того, что результат добавляется в файл(>> f
).
echo "\\r\"" >> f
Добавить последнюю часть функции ожидания отправки.