Скрипт для обновления файла хостов

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

У меня есть команда, которая правильно создает файл /etc/hosts, который я хочу создать. Однако я не могу записать его во 2-й форме из-за прав, конечно. Я попробовал варианты 3-й формы, но по-прежнему возникает ошибка с правами. Может кто-то подскажет, что попробовать?

cat hosts.tmp ; echo -n "myremotehost " ; cat ip.txt

cat hosts.tmp ; echo -n "myremotehost " ; cat ip.txt > /etc/hosts

cat hosts.tmp ; echo -n "myremotehost " ; echo mypassword | sudo -S cat ip.txt > /etc/hosts

Мне было сложно это выяснить! (Относительный новичок в Linux.)

В терминале введите sudo -i, затем войдите, используя пароль пользователя.
Вы окажетесь в корневом каталоге с божественными полномочиями… :>)

Я также обнаружил, что bash filename.sh запустит скрипт.
Простите меня, я испытываю огромное чувство удовлетворения,
написав скрипт (по предложениям в другом посте), который
убил все рекламы на YouTube!

Я бы поместил инструкции по изменению вашего файла /etc/hosts в скрипт оболочки, скажем, modify-hosts.sh, и затем выполнил

sudo modify-hosts.sh

Если вы настаиваете на запуске скрипта без ввода пароля, добавьте запись NOPASSWD специально для этого скрипта и вашего имени пользователя в /etc/sudoers.

Что касается содержимого файла, вы можете сделать:

cp hosts.tmp > /etc/hosts
echo "myremotehost $(cat /path/to/ip.txt)" >> /etc/hosts

Более удобно, если myhostname уже имеет запись в /etc/hosts, вы можете отредактировать его на месте:

sed -i -e 's/myhostname .*/myhostname '$(cat ip.txt)"https://askubuntu.com/" /etc/hosts

И это выражение вы даже можете sudo выполнить в одной строке

sudo sed -i -e 's/myhostname .*/myhostname '$(cat ip.txt)"https://askubuntu.com/" /etc/hosts

без возникновения проблем с переадресацией.

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

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

1. Создание скрипта для обновления файла hosts

Первое, что стоит сделать, — это написать скрипт, который будет отвечать за обновление файла hosts. Назовем его, например, modify-hosts.sh. Этот скрипт должен включать следующие команды:

#!/bin/bash

# Сначала создаем резервную копию существующего файла hosts
cp /etc/hosts /etc/hosts.backup

# Объединяем содержимое hosts.tmp и IP-адрес из ip.txt, добавляя новую строку в файл hosts
cat hosts.tmp > /etc/hosts
echo "myremotehost $(cat ip.txt)" >> /etc/hosts

2. Запуск скрипта с правами администратора

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

sudo bash modify-hosts.sh

3. Настройка sudo без ввода пароля (по желанию)

Если вы хотите запускать этот скрипт без необходимости ввода пароля, вы можете добавить запись в файл /etc/sudoers. Для этого используйте команду:

sudo visudo

Затем добавьте следующую строку, заменив your_username на ваше имя пользователя:

your_username ALL=(ALL) NOPASSWD: /path/to/modify-hosts.sh

4. Прямое редактирование файла hosts

Еще один подход — это использовать команду sed для редактирования файла hosts без необходимости создания дополнительного скрипта. Это можно сделать так:

sudo sed -i -e 's/myhostname .*/myhostname '"$(cat ip.txt)"'/' /etc/hosts

Эта команда заменит существующую строку с myhostname на новую строку, содержащую актуальный IP-адрес.

Заключение

В зависимости от ваших предпочтений, вы можете выбрать один из предложенных методов. Скрипт — отличный способ автоматизировать задачу, а использование команды sudo вместе с sed может сэкономить время, если нужно быстро обновить файл. Убедитесь, что у вас есть резервная копия файла hosts, чтобы избежать возможных ошибок, которые могут привести к проблемам с сетью.

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

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

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