Как автоматически очищать записи файла hosts с помощью скрипта или инструмента?

Вопрос или проблема

Это все о том, как удалить бесполезные записи в файле hosts. Это записи, для которых нет DNS-разрешения. Поэтому мне нужен скрипт или программа для проверки каждой записи. Если есть DNS-разрешение, оставьте запись. Если его нет, удалите запись.

Рассмотрите это как начало файла hosts:

0.0.0.0 .kawaiifashionshop.com

0.0.0.0 0-1x.8632152.xyz

0.0.0.0 0-7l45.cfd

0.0.0.0 0-a5e1.sbs

0.0.0.0 0-c1j0.lat

0.0.0.0 0-lx.160382.xyz

0.0.0.0 0-lx.17843574.xyz

0.0.0.0 0-lx.3724353.xyz

0.0.0.0 0-lx.3783530.xyz

0.0.0.0 0-lx.4832642.xyz

0.0.0.0 0-lx.57632673.xyz

Теперь вы можете попробовать пинговать каждый хост, но дело в том, что хосты могут блокировать ICMP; это довольно распространено. Затем вы можете использовать что-то вроде TCPing. Если DNS-разрешение не может быть выполнено в течение 1/3 секунды, вероятно, оно не будет выполнено. Это также означало бы 3 хоста в секунду, 180 в минуту, 10800 в час, 259200 в день. Так что это должно быть возможно, просто не знаю, какой инструмент лучше всего использовать, а мое скриптование едва ли терпимо.

Ответ или решение

Как автоматически очистить записи в файле hosts с помощью скрипта или инструмента

Файл hosts — это важный системный файл, который позволяет напрямую связывать IP-адреса с доменными именами. Однако с течением времени в этом файле могут накапливаться записи, которые больше не актуальны или не имеют DNS-разрешения. В данной статье мы обсудим, как автоматически очистить такие записи с помощью скрипта или инструмента.

Определение проблемы

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

Подход к решению

Автоматизация процесса очистки файла hosts может быть достигнута несколькими способами. Основная идея заключается в следующем:

  1. Прочитать записи из файла hosts.
  2. Проверить каждую запись на наличие DNS-разрешения.
  3. Удалить записи без DNS-разрешения.

Инструменты и скрипты

1. Использование PowerShell

Для пользователей Windows наилучшим решением будет использование PowerShell. Вот пример скрипта, который выполняет поставленную задачу:

# Определяем путь к файлу hosts
$hostsFilePath = "C:\Windows\System32\drivers\etc\hosts"

# Читаем содержимое файла hosts
$hostsEntries = Get-Content $hostsFilePath

# Инициализируем массив для записи действительных хостов
$validHosts = @()

# Проверяем каждую запись
foreach ($entry in $hostsEntries) {
    # Пропускаем пустые строки и комментарии
    if ($entry -match '^\s*#' -or $entry.Trim() -eq "") {
        $validHosts += $entry
        continue
    }

    # Получаем имя хоста
    $host = $entry -replace '0\.0\.0\.0\s+', ''

    # Проверяем разрешение DNS
    try {
        $dnsResult = [System.Net.Dns]::GetHostAddresses($host) -ne $null
        if ($dnsResult) {
            $validHosts += $entry
        }
    } catch {
        # Ошибка разрешения — запись не добавляется
    }
}

# Сохраняем действительные записи обратно в файл
$validHosts | Set-Content $hostsFilePath
Write-Host "Файл hosts был очищен от недействительных записей."

2. Использование Python

Для пользователей Linux или тех, кто предпочитает язык Python, можно воспользоваться следующим скриптом:

import socket

# Путь к файлу hosts
hosts_file_path = '/etc/hosts'

# Функция для проверки DNS разрешения
def check_dns(host):
    try:
        socket.gethostbyname(host)
        return True
    except socket.error:
        return False

# Считываем существующие записи
with open(hosts_file_path, 'r') as file:
    lines = file.readlines()

valid_hosts = []

for line in lines:
    if line.startswith('0.0.0.0'):
        host = line.split()[1]
        if check_dns(host):
            valid_hosts.append(line)
    else:
        valid_hosts.append(line)

# Сохраняем действительные записи обратно в файл
with open(hosts_file_path, 'w') as file:
    file.writelines(valid_hosts)

print("Файл hosts был очищен от недействительных записей.")

Заключение

Автоматизация очистки файла hosts от ненужных записей помогает поддерживать систему в оптимальном состоянии. Приведенные выше скрипты, написанные на PowerShell и Python, эффективно решают эту задачу, проверяя каждую запись на наличие DNS-разрешения и сохраняя только действительные хосты.

Используя эти инструменты, вы сможете значительно упростить процесс управления файлами hosts и снизить вероятность возникновения проблем с доступом к ресурсам. Рекомендуется периодически выполнять этот процесс, чтобы поддерживать целостность и надежность работы вашей системы.

Оцените материал
Добавить комментарий

Капча загружается...