Использование sed для автоматической загрузки ComboFix

Использование sed для автоматической загрузки ComboFix

Я пытаюсь написать скрипт оболочки для захвата динамического 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, вы избежите автоматической блокировки нашими скриптами.

Спасибо

Связанный контент