Как в hosts прописать строку: Как добавить строку в файл hosts 🚩 как прописывать в hosts 🚩 Операционные системы

Файл Hosts на macOS: как редактировать, где находится

Расскажу как редактировать файл Hosts macOS и зачем он вообще нужен. Как с его помощью блокировать сайты и менять сопоставление IP-адресов. Как восстановить оригинальную версию для отмены внесённых изменений и очистить кэш ДНС через Терминал.

Содержание

  1. Система доменных имён DNS
  2. Редактирование файла Host
  3. Как восстановить файл Hosts на Mac

Система доменных имён DNS

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

Каждый сайт, каждая служба, почти каждое устройство, подключённое к интернету, имеет уникальный числовой IP-адрес, который его идентифицирует.

Существует система доменных имён (DNS), которая преобразует эти IP-адреса в более узнаваемые и запоминающиеся для людей имена. Например, название сайта macnoob.ru выглядит гораздо приятнее IP 5.101.115.179.

Когда вы впервые вводите адрес сайта, Mac проверяет связь с DNS-сервером (это происходит автоматически через интернет-провайдера), чтобы узнать TCP/IP адрес сервера, к которому вы пытаетесь подключиться.

При этом Mac создаёт скрытый файл кеша, чтобы запомнить это сопоставление на случай, если вы заново решите посетить тот же сайт.

Система доменных имён и связанный с ней кеш позволяют компьютеру на macOS узнать, как открыть нужный сайт в интернете.

Но есть ещё файл, который может быть очень полезным. Он называется Hosts, и его можно использовать для принудительного переопределения информации DNS.

Редактирование файла Host

Существует несколько причин изменить файл Hosts вместо того, чтобы просто позволить DNS делать своё дело:

  • Тестирование сайта на сервере, прежде чем его смогут увидеть другие пользователи интернета.
  • Для блокировки или обхода программ-шпионов обнуляя их IP-адреса. Для этого достаточно указать IP 0.0.0.0, а затем имя домена, который вы хотите заблокировать.
  • Устранение последствия работы вирусов-вымогателей, которые блокируют выход в интернет.

Самый популярный способ работы с файлом Host — использовать стандартное приложение Терминал, которое находится в папке «Утилиты» каждого Mac.

Также можно открыть Терминал используя поиск Spotlight или через Launchpad.

Чтобы открыть файл Hosts запустите Терминал и в окне приложения введите команду открытия текстового редактора Nano:

sudo nano /etc/hosts

После ввода команды нажмите клавишу «Ввод», введите свой пароль администратора и снова нажмите «Ввод».

Процесс ввода пароля администратора визуально никак не отображается — это нормально. Просто введите пароль на клавиатуре, нажмите «Ввод» и всё сработает.

Теперь вы находитесь в текстовом редакторе Nano и должны увидеть что-то похожее на это:

Мышь и трекпад здесь не работают, можно использовать только клавиатуру Mac.

Прежде чем изменить Hosts на Mac, сделайте копию файла из /private/etc/hosts. Это может понадобиться, если у вас там прописаны дополнительные сопоставления. В моём случае это IP 10.221.55.3 для виртуальной машины с Windows 10.

Чтобы сопоставить новое устройство или домен с нужным IP-адресом, переместите курсор с помощью клавиш со стрелками на любую строчку после строк, закомментированных символами #.

Например, если вы сопоставляете IP-адрес с доменом, введите IP, нажмите пробел и введите имя домена.

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

Например, чтобы заблокировать посещение сайта macnoob.ru на Mac, нужно сделать так:

После внесения изменений нажмите сочетание клавиш Control+O, чтобы применить их.

После этого нажмите Control+X и «Ввод» для выхода из редактора.

Чтобы увидеть изменения, осталось очистить кеш ДНС. Для этого введите команду:

sudo killall -HUP mDNSResponder

Это очистит кеш DNS на Mac и операционная система увидит внесённые изменения в файле Hosts.

В нашем случае, при попытке открыть сайт macnoob.ru, которому мы сопоставили локальный IP 127.0.0.1, увидим в браузере такое сообщение:

Важно не забыть, что вы редактировали Hosts, потому как позже может потребоваться отменить внесённые изменения.

Альтернативным способом редактирования файла Hosts на Mac служит текстовый редактор TextEdit. Скопируйте файл из /private/etc/hosts и внесите изменения. После чего замените им оригинал (редактировать оригинал не получится).

Как восстановить файл Hosts на Mac

Когда потребуется отменить изменения и восстановить нормальную работу ДНС на Mac, просто замените текущую версию на ранее созданную копию или вставьте в него значения по умолчанию.

Для этого откройте Finder и введите в поиске «Hosts»:

Либо пройдите к его расположению на диске в папке /private/etc/hosts.

Скопируйте его (в оригинал внести изменения нельзя) и откройте в текстовом редакторе TextEdit. Теперь удалите всё содержимое и вставьте значение по умолчанию:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost

Нажмите «Сохранить», закройте файл и замените им оригинал в папке /private/etc/hosts.

Когда macOS спросит, хотите ли вы заменить файл, подтвердите своё решение, введите пароль администратора и перезагрузите Mac.

На этом всё, если появились вопросы — задавайте их в комментариях, постараемся помочь.


Подписывайтесь на наш Telegram, VK.

Как изменить hosts в Windows10

  • Комментарии (1)

Оцените материал

  • 1
  • 2
  • 3
  • 4
  • 5

(23 голосов)

Файл hosts содержит таблицы соответствия доменных имен сетевым адресам. Сведения о соответствии адресов, запрошенные из таблицы в файле hosts, имеют приоритет перед сведениями, запрошенными с DNS-сервера. Как известно, каждому адресу сайта в сети Интернет (доменному имени) соответствует свой ip-адрес (сетевой адрес), по которому сетевое оборудование находит в сети запрашиваемый сайт. Запись в файле hosts избавляет сетевое оборудование от необходимости запрашивать у DNS-сервера ip-адрес, соответствующий тому адресу сайта, который вводится в адресной строке браузера, что, в конечном счете, немного ускоряет скорость загрузки сайта.

А если в файл hosts внести запись, в которой адресу сайта в сети Интернет устанавливается в соответствие локальный IP-адрес 127.0.0.1 (Localhost), можно таким образом заблокировать доступ к этому сайту.

Начиная с Windows 2000 файл hosts по умолчанию располагается на локальном диске с операционной системой по адресу C:\Windows\System32\drivers\etc (если система установлена на диск С).

Для редактирования hosts в операционной системе Windows 10 необходим любой текстовый редактор, в том числе встроенные в Windows Блокнот или WordPad, запущенный с привилегиями администратора, или специальная программа. Сетевой адрес и соответствующее ему доменное имя записываются в одной строке, между записями ставится один или несколько пробелов. Значком решетки # помечаются комментарии.

Далее рассмотрим несколько способов редактирования файла hosts в операционной системе Windows 10.

1 способ. Изменение hosts c помощью командной строки.

Открыть на редактирование файл hosts с возможностью сохранения изменений можно используя командную строку. Открыть ее мы можем воспользовавшись поиском. Вводим в поле поиска cmd и запускаем командную строку от имени администратора.

Затем в поле командной строки вводим команду:

notepad C:\Windows\System32\drivers\etc\hosts

где notepad наименование программы (Блокнот) а C:\Windows\System32\drivers\etc\hosts — путь к файлу hosts (если система установлена в другой раздел, укажите букву того раздела, на который установлена система) и жмем Enter.

 

2 Способ. С помощью Блокнота из учетной записи администратора.

Как было сказано выше, для редактирования файла hosts требуются права администратора. Учетная запись администратора по умолчанию отключена в Windows. Чтобы ее включить нужно запустить командную строку от имени администратора.

В окне командной строки вводим команду net user Администратор /active:yes и затем жмем клавишу Enter.
Появится отчет об успешном выполнении команды.

После чего входим под вновь созданной учетной записью администратора. Под администратором можем беспрепятственно вносить изменения в файл hosts и сохранять изменения. Переходим в папку, расположенную по адресу C:\Windows\System32\drivers\etc, и из контекстного меню, вызванного правой клавишей мыши, выбираем пункт «Открыть с помощью».

Затем выбираем программу, которой хотим открыть (например Блокнот), и жмем «ОК».

3 способ. изменить файл hosts с помощью Блокнота из учетной записи пользователя.

Второй способ не требует авторизации под администратором, однако, если эта учетная запись активирована и на нее установлен пароль, то на некоторых шагах система потребует его ввести.
Наша задача состоит в том, чтобы запустить редактор с правами администратора и в нем уже открывать и редактировать файл hosts. Будем в качестве редактора использовать Блокнот. Чтобы открыть его, мы можем ввести слово блокнот в поле встроенного поисковика, а затем вызвав контекстное меню правой клавишей мыши, выбрать пункт «Запустить от имени администратора».

Или переходим в папку по адресу C:\Windows\System32, находим в ней файл notepad и запускаем его от имени администратора, нажав соответствующий пункт контекстного меню.

В открывшемся окне редактора жмем «Файл» → «Открыть».

Далее указываем путь к файлу hosts (C:\Windows\System32\drivers\etc) и жмем открыть.

 

 

4 способ. С помощью программы Hosts File Editor.

Еще один способ — использование специальных программ для редактирования hosts. Одна из таких программ Hosts File Editor. Скачать ее можно по ссылке http://hostsfileeditor.codeplex.com.
После заполнения соответствующих ячеек таблицы следует нажать «Save».

Можем из программы Hosts File Editor открыть текстовую версию файла hosts и посмотреть что получилось.

Я очень надеюсь, моя статья помогла Вам! Просьба поделиться ссылкой с друзьями:

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

Наверх

linux — Добавление строки в файл hosts, отказ в разрешении при использовании sudo — Mac

спросил

Изменено
2 года, 4 месяца назад

Просмотрено
33 тысячи раз

Я пытаюсь добавить строку в файл hosts на своем Mac, выполнив однострочную команду на терминале.

Я думал, что это будет легко сделать с помощью sudo, но он возвращает «отказано в доступе», когда я пытаюсь добавить >> в файл hosts, но это работает, если я пытаюсь заменить > содержимое hosts.

 эхо-тест sudo >> /etc/hosts
-bash: /etc/hosts: Отказано в доступе
$
эхо-тест sudo > /etc/hosts
Пароль:
$
 

ОС обновлена.

  • linux
  • macos
  • sudo
  • хосты

2

Это потому, что echo запускается от имени пользователя root, но на самом деле перенаправление выполняет оболочка. Для этого вам нужно создать новую оболочку:

 sudo -- sh -c "echo test >> /etc/hosts"
 

Изменить: я не видел, чтобы перенаправление > работало; Я не могу это объяснить.

1

Вместо запуска echo через перенаправление, которое будет выполняться от имени вашего текущего пользователя, а не root, поскольку в вашем примере выполняется echo, используйте tee, как предлагает Стив Бузонас

 эхо 'тест' | sudo tee -a /etc/hosts
 

Теперь к команде tee применяется sudo. ‘-a’ добавляется к файлу

Это также выведет tee на стандартный вывод. Если вы не хотите видеть «тест» в своем терминале, также добавьте: > /dev/null в конец этой строки.

Также хорошо работает из скрипта:

 sudo /bin/sh -c 'echo "127.0.0.1 mydomain" >> /etc/hosts'
 

1

Чтобы убедиться, что новая строка была создана первой, я использовал это:

 sudo -- sh -c "echo \ \ >> /etc/hosts"; sudo -- sh -c "echo 127.0.0.1 testdomain.com > > /etc/хост"
 

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

Python заменить строку в текстовом файле

спросил

Изменено
5 лет, 1 месяц назад

Просмотрено
2к раз

Я пытаюсь управлять хост-файлом с помощью скрипта Python. Я новичок в python, и мне трудно понять, как заменить строку, если я найду совпадение. Например, если адрес изменяется в файле хоста для веб-сайта, я хочу, чтобы скрипт нашел его и изменил обратно. Спасибо за вашу помощь.

 импорт ОС
время импорта
# расположение в хост-файле для чтения и записи
hosts_path=r"C:\Windows\System32\drivers\etc\hosts"
#адрес, который я хочу для сайтов
перенаправление = "0.0.0.0"
#сайты, для которых я установлю адрес
Website_list=["portal.citidirect.com","www.bcinet.nc","secure.banque-tahiti.pf","www.bancatlan.hn","www.bancentro.com.ni","www. davivienda.com.sv","www.davivienda.cr","cmo.cibc.com","www.bi.com.gt","empresas.banistmo.com","online.belizebank.com"," online.westernunion.com", "archive.clickatell.com"]
#непрерывный цикл
пока верно:
    с open(hosts_path,'r+') в виде файла:
        содержимое=файл.чтение()
# для каждого из веб-сайтов в списке выше убедитесь, что они находятся в файле хоста с правильным адресом
        для веб-сайта в website_list:
            сайт=перенаправление+" "+ веб-сайт
#вот тут у меня проблема, если сайт есть в host файле, но с неправильным адресом я хочу написать через строку, вместо этого программа добавляет его в конец файла
            если сайт в содержании:
                если сайт в содержании:
                    проходить
                еще:
                    file. write(сайт)
            еще:
                file.write("\n"+сайт)
    время сна(300)
    os.system('ipconfig /flushdns')
 
  • питон

3

Вам нужно прочитать файл в список, затем изменить индекс списка, если это необходимо, затем записать список обратно в файл. То, что вы делаете, это просто запись в конец файла. Вы не можете изменить файл напрямую. Вам нужно записать изменения в список, а затем написать список. В итоге мне пришлось переписать большую часть кода. Вот полный сценарий. Я не был уверен, что os.system('ipconfig /flushdns') работал, поэтому я удалил его. Вы можете легко добавить его обратно, где вы хотите.

 #!/usr/bin/env python3.6
время импорта
hosts_path = r"C:\\Windows\\System32\\drivers\\etc\\hosts"
перенаправление = "0.0.0.0"
список_сайтов = [
    "портал.citidirect.com",
    "www.bcinet.nc",
    "secure.bank-tahiti.pf",
    "www.bancatlan.hn",
    "www. bancentro.com.ni",
    "www.davivienda.com.sv",
    "www.davivienda.cr",
    "cmo.cibc.com",
    "www.bi.com.gt",
    "empresas.banistmo.com",
    "онлайн.belizebank.com",
    "онлайн.westernunion.com",
    "archive.clickatell.com"]
def substring_in_list (the_list, подстрока):
    для s в the_list:
        если подстрока в s:
            вернуть Истина
    вернуть ложь
определение write_websites():
    с открытым (hosts_path, 'r') в качестве файла:
        содержимое = файл.readlines()
    для веб-сайта в website_list:
        site = "{} {}\n".format(перенаправление, веб-сайт)
        если не substring_in_list(контент, сайт):
            content.append(сайт)
        еще:
            для строки в содержании:
                если сайт в очереди:
                    проходить
                веб-сайт elif в очереди:
                    строка = сайт
    с открытым (hosts_path, "w") в качестве файла:
        file.writelines(содержимое)
пока верно:
    write_websites()
    время сна(300)
 

2

Итак, вы собираетесь назначать один и тот же IP-адрес каждому сайту, которого нет в вашем списке сайтов?

Следующее заменит то, что находится внутри вашего внешнего цикла while :

 # Прочитать все строки из файла хоста,
# разбивка каждого на имя хоста, IPaddr и псевдонимы (если есть),
# и обрезать начальные и конечные пробелы из
# каждый из этих компонентов. 
host_lines = [[component.strip() для компонента в line.split(None, 2)] для строки в open(host_path).readlines()]
# Обработать каждую из исходных строк.
для строки в host_lines:
    # Есть ли сайт в нашем списке?
    если строка[1] в Website_list:
        # Убедитесь, что адрес правильный...
        если строка[0] != перенаправить:
            строка[0] == перенаправление
        # Мы можем удалить это из списка веб-сайтов.
        веб-сайт_list.remove (строка [1])
# Какие бы сайты ни остались на веб-сайтах, они не отображаются
# в файле hosts. Добавьте строки для них в host_lines
host_lines.extend([[перенаправление, сайт] для сайта в списке_сайтов])
# Запишите host_lines обратно в файл hosts:
open(hosts_path, 'w').write("\n".join([" ".join(line) для строки в host_lines]))
 

Самое правое соединение склеивает компоненты каждой строки вместе в единую строку. присоединяется к слева от него, склеивает все эти строки вместе с символами новой строки между ними и записывает всю эту строку в файл.

Должен сказать, это выглядит довольно сложным и даже опасным способом убедиться, что ваш файл hosts всегда актуален и точен. Не лучше ли вместо этого каждые пять минут запускать cron job scp файл заведомо хороших хостов с доверенного хоста?

1

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

 #!/usr/bin/env python3.6
импорт ОС
импортный шутил
время импорта
temp_file = r"c:\temp\Web\hosts"
temp_directory="c:\temp\Web"
hosts_path = r"C:\Windows\System32\drivers\etc\hosts"
веб-сайты = ('''# Copyright (c) 1993-2009 Корпорация Майкрософт.
#
# Это пример файла HOSTS, используемого Microsoft TCP/IP для Windows.
#
# Этот файл содержит сопоставления IP-адресов с именами хостов. Каждый
# запись должна быть сохранена на отдельной строке. IP-адрес должен
# помещается в первый столбец, за которым следует соответствующее имя хоста.
# IP-адрес и имя хоста должны быть разделены хотя бы одним
# пространство.
#
# Кроме того, комментарии (такие как эти) могут быть вставлены в отдельные
# строк или после имени машины, обозначенного символом '#'.
#
# Например:
#
# 102.54.94.97 rhino.acme.com # исходный сервер
# 38.25.63.10 x.acme.com # x клиентский хост
# Разрешение имени локального хоста выполняется внутри самого DNS.
# 127.0.0.1 локальный хост
# ::1 локальный хост
0.0.0.0 портал.citidirect.com
0.0.0.0 www.bcinet.nc
0.0.0.0 secure.bank-tahiti.pf
0.0.0.0 www.bancatlan.hn
0.0.0.0 www.bancentro.com.ni
0.0.0.0 www.davivienda.com.sv
0.0.0.0 www.davivienda.cr
0.0.0.0 cmo.cibc.com
0.0.0.0 www.bi.com.gt
0.0.0.0 empresas.banistmo.com
0.0.0.0 онлайн.belizebank.com
0.0.0.0 онлайн.westernunion.com
0.0.0.0 архив.clickatell.com''')
определение write_websites():
с открытым (temp_file, 'w+') в качестве файла:
file.

Читайте также: