Смена имени хоста (hostname):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Смена имени хоста (hostname) sudo hostnamectl set-hostname <новое_имя_хоста> Пример: sudo hostnamectl set-hostname mypc Если команды hostnamectl нет, можно отредактировать файл: vim /etc/hostname Редактирование файла hosts vim /etc/hosts Найдите строку с текущим именем хоста и замените его на новое. Она должна выглядеть примерно так: -------------- 127.0.0.1 localhost 127.0.1.1 mypc ------------- Перезагружаем систему reboot Если у вас ультелиты systemctl все таки есть то можно так: systemctl restart systemd-hostnamed |
Отключение передачи имени хоста через DHCP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Изменение настроек DHCP-клиента: vim /etc/dhcp/dhclient.conf --------------------------- send host-name ""; --------------------------- Обновление настроек NetworkManager (если используете): vim /etc/NetworkManager/NetworkManager.conf ------------------------------------------- [main] dhcp=dhclient [dhcp] send-hostname=false ------------------------------------------- Перезапустите службу NetworkManager: systemctl restart NetworkManager |
Использование sed для автоматического редактирования файлов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
0. Изменение имени хоста: Вот как можно внести изменения в файлы /etc/hostname, /etc/hosts, /etc/dhcp/dhclient.conf, и /etc/NetworkManager/NetworkManager.conf: NEW_HOSTNAME="mypc" # Изменение имени хоста в /etc/hostname sudo sed -i "s/.*/$NEW_HOSTNAME/" /etc/hostname # Изменение имени хоста в /etc/hosts sudo sed -i "s/^\(127\.0\.1\.1\s*\).*/\1$NEW_HOSTNAME/" /etc/hosts 1. Отключение передачи имени хоста в DHCP Для /etc/dhcp/dhclient.conf: sudo sed -i "/^send host-name/ s|.*|send host-name \"\";|" /etc/dhcp/dhclient.conf sudo grep -q "^send host-name" /etc/dhcp/dhclient.conf || echo 'send host-name "";' | sudo tee -a /etc/dhcp/dhclient.conf Для /etc/NetworkManager/NetworkManager.conf: Убедимся, что параметры dhcp=dhclient и send-hostname=false добавлены: sudo sed -i "/^\[main\]/,/^\[/ s/^dhcp=.*/dhcp=dhclient/" /etc/NetworkManager/NetworkManager.conf sudo sed -i "/^\[dhcp\]/,/^\[/ s/^send-hostname=.*/send-hostname=false/" /etc/NetworkManager/NetworkManager.conf # Добавляем секции, если их нет sudo grep -q "^\[main\]" /etc/NetworkManager/NetworkManager.conf || echo -e "\n[main]\ndhcp=dhclient" | sudo tee -a /etc/NetworkManager/NetworkManager.conf sudo grep -q "^\[dhcp\]" /etc/NetworkManager/NetworkManager.conf || echo -e "\n[dhcp]\nsend-hostname=false" | sudo tee -a /etc/NetworkManager/NetworkManager.conf 2. После внесения изменений перезапустите службы: sudo systemctl restart systemd-hostnamed sudo systemctl restart networking sudo systemctl restart NetworkManager |
Скрипт на баше:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#!/bin/bash # Убедимся, что скрипт запускается с правами root if [[ $EUID -ne 0 ]]; then echo "Этот скрипт необходимо запускать с правами root." exit 1 fi # Новое имя хоста NEW_HOSTNAME="mypc" # Файлы для редактирования HOSTNAME_FILE="/etc/hostname" HOSTS_FILE="/etc/hosts" DHCLIENT_FILE="/etc/dhcp/dhclient.conf" NETWORK_MANAGER_FILE="/etc/NetworkManager/NetworkManager.conf" echo "1. Изменяем имя хоста..." # Изменение имени хоста в /etc/hostname sed -i "s/.*/$NEW_HOSTNAME/" "$HOSTNAME_FILE" # Изменение имени хоста в /etc/hosts sed -i "s/^\(127\.0\.1\.1\s*\).*/\1$NEW_HOSTNAME/" "$HOSTS_FILE" echo "2. Отключаем передачу имени хоста через DHCP..." # Настройка /etc/dhcp/dhclient.conf if grep -q "^send host-name" "$DHCLIENT_FILE"; then sed -i "/^send host-name/ s|.*|send host-name \"\";|" "$DHCLIENT_FILE" else echo 'send host-name "";' >> "$DHCLIENT_FILE" fi # Настройка /etc/NetworkManager/NetworkManager.conf if grep -q "^\[main\]" "$NETWORK_MANAGER_FILE"; then sed -i "/^\[main\]/,/^\[/ s/^dhcp=.*/dhcp=dhclient/" "$NETWORK_MANAGER_FILE" else echo -e "\n[main]\ndhcp=dhclient" >> "$NETWORK_MANAGER_FILE" fi if grep -q "^\[dhcp\]" "$NETWORK_MANAGER_FILE"; then sed -i "/^\[dhcp\]/,/^\[/ s/^send-hostname=.*/send-hostname=false/" "$NETWORK_MANAGER_FILE" else echo -e "\n[dhcp]\nsend-hostname=false" >> "$NETWORK_MANAGER_FILE" fi echo "3. Перезапускаем службы..." # Перезапуск служб для применения изменений systemctl restart systemd-hostnamed systemctl restart networking systemctl restart NetworkManager echo "Изменения применены!" echo "Проверка текущего имени хоста:" hostnamectl |
Проверка:
1 2 3 4 5 6 7 8 9 10 11 12 |
Убедитесь, что имя хоста изменилось: hostnamectl Проверьте файл /etc/hosts и /etc/hostname: cat /etc/hosts cat /etc/hostname Проверка сетевого демона: systemctl status networking Слушаем трафик: sudo tcpdump -i eth0 port 67 or port 68 |