
Я пытаюсь написать скрипт оболочки для захвата динамического URL-адреса, по которому расположен ComboFixBleepingComputer.com/download/combofix
Однако по какой-то причине я не могу заставить свое регулярное выражение сопоставлять ссылку на загрузку "click here", если загрузка не работает. Я использовал тестер регулярных выражений, и он сказал, что я сопоставил ссылку, но я не могу заставить его работать, когда я его запускаю, он возвращает пустой результат. Вот мой полный скрипт:
#!/bin/bash
# Download latest ComboFix from BleepingComputer
wget -O Listing.html "http://www.bleepingcomputer.com/download/combofix/" -nv
downloadpage=$(sed -ne 's@^.*<a href="\(http://www[.]bleepingcomputer[.]com/download/combofix/dl/[0-9]\+/\)" class="goodurl">.*$@\1@p' Listing.html)
echo "DL Page: $downloadpage"
secondpage="$downloadpage"
wget -O Download.html $secondpage -nv
file=$(sed -ne 's@^.*<a href="\(http://download[.]bleepingcomputer[.]com/dl/[0-9A-Fa-f]\+/[0-9A-Fa-f]\+/windows/security/anti[-]virus/c/combofix/ComboFix[.]exe\)">.*$@\1@p' Download.html)
echo "File: $file"
wget -O "ComboFix.exe" "$file" -nv
rm Listing.html
rm Download.html
mkdir Tools
mv "ComboFix.exe" "Tools/ComboFix.exe" -f
Первые две загрузки прошли успешно, и в итоге я получил: http://www.bleepingcomputer.com/download/combofix/dl/12/
Но он не соответствует финальному sed, который даст мне ссылку на скачивание.
Код, которому он должен соответствовать, следующий:
<a href="http://download.bleepingcomputer.com/dl/6c497ccbaff8226ec84c97dcdfc3ce9a/5058d931/windows/security/anti-virus/c/combofix/ComboFix.exe">click here</a>
РЕШЕНИЕ:
Для тех, кому интересно, вот окончательный работающий код:
#!/bin/bash
# Download latest ComboFix from BleepingComputer
wget -O Download.html "http://www.bleepingcomputer.com/download/combofix/12" -nv
file=$(sed -ne 's@^.*<a href=\x27\(http://download[.]bleepingcomputer[.]com/dl/[0-9A-Fa-f]\+/[0-9A-Fa-f]\+/windows/security/anti[-]virus/c/combofix/ComboFix[.]exe\)\x27>.*$@\1@p' Download.html)
echo "File URL: $file"
wget -OSN "ComboFix.exe" "$file" -nv
решение1
Это смешно: я только что пошелhttp://www.bleepingcomputer.com/download/combofix/dl/12/и нашел
<a href='http://download.bleepingcomputer.com/dl/587c6038..../..../ComboFix.exe'>нажмите здесь</a>.
т. е. URL-адрес заключен в одинарные кавычки (') вместо двойных кавычек (") (что и sed
ищет ваша команда).
решение2
Нет необходимости загружать первую страницу, так как вторая страница статична. Она всегда будет:
http://www.bleepingcomputer.com/download/combofix/dl/12/
Также настоятельно рекомендуется использовать-Нфлаг на wget для проверки временных меток. Это загрузит ComboFix только если он новее того, что на вашем компьютере.
Также убедитесь, что ваш скрипт запускается только один или два раза в день. Нет необходимости запускать его чаще.
Ограничивая запросы и используя -N, вы избежите автоматической блокировки нашими скриптами.
Спасибо