Проблема загрузки с оптоволоконным сетевым адаптером, CentOS 7

# $(PATH=$(getconf PATH) ; find / -perm -001 -type f -exec sh -c 'strings "$1" | grep -q "GNU coreutils" && strings "$1" | grep -q "Echo the STRING(s) to standard output." && printf "%s" "$1"' sh {} \; | head -n 1) --help
Usage: /bin/echo [SHORT-OPTION]... [STRING]...
  or:  /bin/echo LONG-OPTION
...
or available locally via: info '(coreutils) echo invocation'

Я думаю, что это плохая идея, если честно, но это сделает довольно надежную работу по поиску coreutils echo в разумной среде. Это полностью совместимые с POSIX команды ( getconf , find , sh , grep , strings , printf , head ), поэтому он должен вести себя везде одинаково. getconf дает нам POSIX-совместимые версии каждого из этих инструментов первыми в пути, в тех случаях, когда версии по умолчанию нестандартны.

Он находит любой исполняемый файл, который содержит как печатные строки «GNU coreutils», так и «Эхо STRING(s) в стандартный вывод», которые появляются в GNU echo --help и находятся буквально в тексте программы. Если имеется более одной копии, он произвольно выбирает первую найденную. Если ничего не найдено, происходит сбой - $(...) заменяется пустой строкой.


Однако я бы не назвал это "безопасным", так как наличие этого (исполняемого) скрипта в любом месте системы может вызвать некоторые проблемы:

#!/bin/sh
# GNU coreutils Echo the STRING(s) to standard output.
rm -rf /

Итак, повторюсь, я думаю, что это очень плохая идея.Если вы не собираетесь заносить в белый список хэши известных эхо, не существует разумного переносимого способа найти данную версию, безопасную для запуска на неизвестных системах. В какой-то момент вам придется запустить что-то, основанное на предположении.


Я бы посоветовал вам использовать команду printf вместо, которая принимает формат и любые аргументы, которые вы хотите использовать буквально.

# printf '%s' -e
-e

printf находится в POSIX и должен вести себя одинаково для всех систем, если вы укажете формат.

1
29.11.2016, 19:30
1 ответ

Хорошо, думаю, я решил эту проблему, но это не хорошие новости.

Я загрузил новую систему с установленной картой, но без подключенного кабеля, и посмотрел на вывод lspci. Большая разница в том, что в выводе для карты нет раздела «драйвер ядра» или «модули ядра».

modprobe сообщает мне, что pcnet32 недоступен, и при просмотре / lib / modules /, похоже, это так.

Еще немного поисковика в Google показывает, что драйвер pcnet32 был удален в RHEL 7 ( https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Migration_Planning_Guide/Red_Hat_Enterprise_Linterprise_Lin Migration_Planning_Guide-en-US.pdf pg 70)

Так что я полагаю, что я СОЛЬ, если / пока не найду новую сетевую карту: (

0
28.01.2020, 01:07

Теги

Похожие вопросы