Смена имени хоста (hostname):
Смена имени хоста (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
Изменение настроек 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 для автоматического редактирования файлов:
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.1s*).*/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
Скрипт на баше:
#!/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.1s*).*/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
Проверка:
Убедитесь, что имя хоста изменилось: hostnamectl Проверьте файл /etc/hosts и /etc/hostname: cat /etc/hosts cat /etc/hostname Проверка сетевого демона: systemctl status networking Слушаем трафик: sudo tcpdump -i eth0 port 67 or port 68