Вы можете искать строки, состоящие только из допустимых символов Base64, с правильной структурой и при необходимости отступами:
grep -E '[A-Za-z0-9+/]{4}*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)'
Это ищет любое количество последовательностей из четырех символов Base64, за которыми следуют либо еще четыре, либо три с одним символом заполнения, либо две последовательности с двумя символами заполнения.
Ah -нужен CR, а не NL
echo -e "cat /etc/hosts\r"
(но если кто-нибудь может ответить на мой второй вопрос...)
Tcl и expect ничего не делают автоматически со стандартным вводом. Его нужно активно читать:
send "echo 002-READY\r"
expect -re {\$ $}
fconfigure stdin -blocking no
while {[gets stdin line] != 0} {
# prevent an infinite loop waiting for data on stdin
if {$line eq ""} break
send "$line\r"
expect -re {\$ $}
}
# finished sending the input: now log off gracefully
send "exit\r"
expect eof
Примечание оsleep
--обычно вам не нужно спать после отправки чего-либо , если у вас есть правильные expect
шаблоны . Я рекомендую вам использовать expect -d program.exp
во время разработки скрипта, чтобы убедиться, что ваши шаблоны совпадают.