Если вы не можете позволить себе неудачу, попробуйте.
Даже если вы можете позволить себе неудачу, тестирование - это хорошо. Если возможно, запустите сборку в специальной тестовой среде. Во многих случаях виртуальный гость является подходящей тестовой системой. Когда вы перезагружаетесь в обновленное ядро и все последующие тесты также завершаются успешно, только затем скопируйте и разверните новый пакет в своей удаленной системе.
Теперь к вашему основному вопросу: будут ли ваш план и делать olddefconfig
ошибками, которые приведут к сбою загрузки?
Только идиот может поверить, что любая система полностью защищена от дурака. Когда вы хотите запустить самое последнее ядро , как вы заявили, вы будете на переднем крае и получите все преимущества и риски, связанные с этим. Снижение риска - это выбор долгосрочного выпуска, в котором набор функций заморожен, и будут внесены только исправления ошибок / безопасности.
В любом случае: любая перезагрузка имеет небольшой риск неудачи.
Кстати, в прошлом я провел слишком много часов в центрах обработки данных, устраняя проблемы / неправильную конфигурацию серверов и рекомендую всем всегда добавлять подходящий вариант удаленного управления (например, HP ILO, Dell DRAC, Oracle ILOM и т. Д.) или шлюз KVM через IP) на удаленные серверы, что позволяет решить большинство проблем, не выходя из рабочего стола.
sed 's/^[^"]* *//
s/" */"\n/2
/\n/P;D
' <in >out
Это будет по очереди печатать и поглощать строки ввода по одному контексту в двойных кавычках за раз. Вероятно, это сделает ваши данные более удобными для grep
. Как написано, это не работает, если цитируемые контексты могут охватывать символы новой строки, но, насколько я понимаю, они не должны этого делать в HTML.
В любом случае, это значительно упрощает обработку вашего образца:
class="box-download"
data-no-file="0"
title="SHAREit free download"
href="http://gsf-cf.softonic.com/c98/1a8/173dd01ec9001985d81eb5f2023b03280c/LenovoShareIt-win.exe?SD_used=0&channel=WEB&fdh=no&id_file=69703978&instance=softonic_en&type=PROGRAM&Expires=1444364906&Signature=SdKSfTDHY4dG6HVu2--lqt8lRbGK9S1opIDZiSNwvggAAAXB3hESz1G1Y00rU5iLGY5lai0YOJBXhE4y6gvL4uQvCV4U5jzLDU9TmFTxe4xNDrEmkSC95LyGdGSudQKfrWdD06gBlVrqE49AeeotENtdA3SpkmfQGGd1tnjS138_&Key-Pair-Id=APKAJUA62FNWTI37JTGQ&filename=LenovoShareIt-win.exe"
id="download-button"
class="button-main-download-xl"
data-ua="#c,#l,a=Download,downloadType=HostedDownload"
class="icon-download-alt"
С помощью этого (фиксированного) file.html:
<html>
<div class="box-download">
<a data-no-file="0" title="SHAREit free download" href="http://gsf-cf.softonic.com/c98/1a8/173dd01ec9001985d81eb5f2023b03280c/LenovoShareIt-win.exe?SD_used=0&channel=WEB&fdh=no&id_file=69703978&instance=softonic_en&type=PROGRAM&Expires=1444364906&Signature=SdKSfTDHY4dG6HVu2--lqt8lRbGK9S1opIDZiSNwvggAAAXB3hESz1G1Y00rU5iLGY5lai0YOJBXhE4y6gvL4uQvCV4U5jzLDU9TmFTxe4xNDrEmkSC95LyGdGSudQKfrWdD06gBlVrqE49AeeotENtdA3SpkmfQGGd1tnjS138_&Key-Pair-Id=APKAJUA62FNWTI37JTGQ&filename=LenovoShareIt-win.exe" id="download-button" class="button-main-download-xl" data-ua="#c,#l,a=Download,downloadType=HostedDownload">
<strong>Free Download<span>Safe download</span></strong>
<i class="icon-download-alt"></i>
</a>
</div>
</html>
Команда:
xmlstarlet sel -t -v "//html/div/a/@href" file.html
Вывод:
http://gsf-cf.softonic.com/c98/1a8/173dd01ec9001985d81eb5f2023b03280c/LenovoShareIt-win.exe?SD_used=0&channel=WEB&fdh=no&id_file=69703978&instance=softonic_en&type=PROGRAM&Expires=1444364906&Signature=SdKSfTDHY4dG6HVu2--lqt8lRbGK9S1opIDZiSNwvggAAAXB3hESz1G1Y00rU5iLGY5lai0YOJBXhE4y6gvL4uQvCV4U5jzLDU9TmFTxe4xNDrEmkSC95LyGdGSudQKfrWdD06gBlVrqE49AeeotENtdA3SpkmfQGGd1tnjS138_&Key-Pair-Id=APKAJUA62FNWTI37JTGQ&filename=LenovoShareIt-win.exe
Это не может работать, потому что у вас есть обратная косая черта (если только парсер StackExchange не напортачил). Вы выяснили, что для выбора содержимого атрибута вы поместите его в новую строку и вырежете оттуда. Но символ новой строки - \ n
, а не \ / n
. Второй - « / n
, гарантирующий, что косая черта обрабатывается буквально».
Итак, этот код после исправления будет работать:
grep -1 box-download shareit1.txt|sed 's:<a:\n:'|sed 's/href/\n/'|grep http |cut -d\" -f 2
Хотя вы можете сократить количество каналов и вызовов внешних программ, полагаясь исключительно на sed
:
sed -n -e '/http/ s:.*href="\([^"]*\)".*:\1: p' shareit1.txt
Примечание. в любом случае все эти подходы ошибочны. Правильный способ - использовать DOM / XPath. Проблема в том, что нет DOM-парсера для оболочки (о котором я знаю) и обычных XML-парсеров оболочки, которые позволяют указывать выражения XPath, ожидают, что файл будет действительным XML, чего почти никогда не бывает с содержимым веб-сайта. В других языках программирования, таких как Python, ruby или perl (чтобы упомянуть наиболее распространенные из них для системных администраторов), есть библиотеки, которые превратят беспорядочный HTML-файл во что-то, напоминающее действительный XML-файл, и то, что может быть загружено в синтаксический анализатор XML.
Вы можете использовать lynx -dump --list-only
для извлечения списка URL из html-ввода.
Если у вас еще не установлен lynx
, вам придется установить его, используя любой механизм, обычный для вашей системы linux или unix (например, lynx
). apt-get
, yum
, make install
и т. д.)
например
$ lynx -force_html -dump --listonly shareit1.txt | awk '/^ *[0-9]+\. / { print $2}'
http://gsf-cf.softonic.com/c98/1a8/173dd01ec9001985d81eb5f2023b03280c/LenovoShareIt-win.exe?SD_used=0&channel=WEB&fdh=no&id_file=69703978&instance=softonic_en&type=PROGRAM&Expires=1444364906&Signature=SdKSfTDHY4dG6HVu2--lqt8lRbGK9S1opIDZiSNwvggAAAXB3hESz1G1Y00rU5iLGY5lai0YOJBXhE4y6gvL4uQvCV4U5jzLDU9TmFTxe4xNDrEmkSC95LyGdGSudQKfrWdD06gBlVrqE49AeeotENtdA3SpkmfQGGd1tnjS138_&Key-Pair-Id=APKAJUA62FNWTI37JTGQ&filename=LenovoShareIt-win.exe
Вы можете использовать pup ]; это потрясающий инструмент.
Посмотрите, как я загружаю файл, а затем добавляю в файл определенные ссылки из HTML-кода.
wget http://domain.com -O file.html && pup 'a.className[href] attr{href}' < file.html > links.md
Все ссылки на Domain.com с именем класса className
будут загружены и сохранены в файл с именем links.md
.