archlinux проверяют диски на начальной загрузке

В этом случае использование одного из многих языков программирования общего назначения, которые обычно доступны для Unix и системы Linux (либо в рамках установки по умолчанию, либо через простую установку пакетов), вероятно, является самым простым. Вот пример того, как бы вы выполнили поставленную задачу, используя Ruby:

#!/usr/bin/env ruby
require 'ipaddr'

ip = ARGV[0]
ARGV.delete(ip)
last_location = nil
ARGF.each do |line|
  if line.include?(':')
    last_location = line.chomp.gsub(/:/, "")
    next
  end

  first, last = line.chomp.split("-").map {|i| IPAddr.new(i).to_i }
  needle = IPAddr.new(ip).to_i
  if (first..last).include?(needle)
    puts "Found #{ip} in #{last_location}"
  end
end

Это не особенно хороший Ruby, но он способен воспользоваться библиотекой ipaddr, чтобы избежать ручного разбора IP-адресов. Хотя ручная обработка не будет большой проблемой в вашем тексте примера, она будет более сложной, если у вас есть диапазоны, такие как 172.25.2.0-172.25.3.200.

Ваш вопрос помечен bash и текстовая обработка . Если вы ищете ответ, используя более широко доступные инструменты обработки текста, такие как sed, awk и grep, то вы можете просто посмотреть на общую стратегию, содержащуюся в сценарии рубина выше:

  1. Храните аргумент IP-адреса в переменной для легкого доступа позднее
  2. Читайте каждую строку файла
  3. Определите, является ли строка описанием местоположения или диапазоном IP-адресов.
  4. Если это описание местоположения, сохраните его в last_location
  5. Если это диапазон IP-адресов, определите, находится ли ваш IP в этом диапазоне
  6. Если ip находится в этом диапазоне, распечатайте переменную last_location.

Это не самое элегантное решение, но его легко реализовать на нескольких языках, и за ним легко будет последовать любой, кто знаком с этим языком.

1
01.09.2014, 18:00
1 ответ

Если ваши сценарии инициализации поддерживают это, вы можете добавить -c -c в / fsckoptions (затем создать / forcefsck и перезагрузиться). К сожалению, эта функция доступна не везде. Возможно, вам придется вместо этого перезагрузиться на LiveCD / LiveUSB.

Выполнить сканирование на плохие блоки корневого раздела в Linux

1
27.01.2020, 23:52

Теги

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