Изменение имен хостов

Некоторые вещи, которые вы можете попробовать.

удалите учетную запись из Ubuntu и войдите в свою учетную запись Google в браузере и перейдите на страницу настроек для своей учетной записи, нажмите «Безопасность», а затем вы увидите «учетную запись» разрешений "и удалить что-либо из Ubuntu.

После этого попробуйте добавить учетную запись еще раз.

4
задан 24 January 2012 в 21:24

1 ответ

Имя хоста хранится в /etc/hostname

Где address - список ваших IP-адресов:

for A in `cat address` ; do NODE="node`echo $A | cut -d. -f4`" ; ssh $A "echo $NODE > /etc/hostname" ; done

Для каждого IP мы отключили последнее поле, префикс его с «узлом» и записать его в / etc / hostname

Теперь это должно работать, но оно будет работать только в том случае, если у вашего пользователя есть права на запись в / etc / hostname, которое по умолчанию стандартно пользователи не имеют на Ubuntu.

Что вы можете сделать, это подать свой пароль на sudo через STDIN; например echo "password" | sudo -S; обратите внимание, что это не безопасно, потому что вы оставите свой пароль в истории своей оболочки. Найдите его с помощью команды history и удалите это с помощью history -d <historyId>.

Не надо, конечно, писать свой пароль в текстовый файл в домашней папке ...

Итак, вообще

for A in `cat address` ; do 
    NODE="node`echo $A | cut -d. -f4`"
    ssh $A "echo 'myPassword' | sudo -S echo $NODE > /etc/hostname"
done

- отредактируйте

Если вы хотите переписать файл hosts на каждой машине, вы можете добавить немного awk в микс; замените шаблон 127\.0\.0\. на тот, который фактически соответствует вашей подсети. Он будет записывать оставшиеся строки файла нетронутыми.

/^127\.0\.0\./ {
        split($1, quads, /\./)
        print $1 "\tnode" quads[4]
        next
}

{ print $0 }

Это заменит все имена хостов для IP-адресов в вашей подсети «nodeN», где N - последний квадрат IP-адреса. [!d10 ]

Таким образом, мы добавляем эти команды в цикл for A (сжатие awk-скрипта на одну строку и экранирование символов по мере необходимости). Нам не нужно быть root, чтобы читать /etc/hosts, но нам нужно быть root, чтобы заменить его после того, как мы заменим его на /tmp

ssh $A "awk '/^127\.0\.0\./ { split(\$1, quads, /\./) ; print \$1 \"\tnode\" quads[4] ; next } { print \$0 }' /etc/hosts > /tmp/hosts.new"
ssh $A "echo 'myPassword' | sudo -S mv /etc/hosts /etc/hosts.old"
ssh $A "echo 'myPassword' | sudo -S mv /tmp/hosts.new /etc/hosts"
4
ответ дан 25 May 2018 в 14:55
  • 1
    Это не работает, я думаю. Потому что нам нужно также изменить имя хоста в /etc/hosts. Pls проверит и обновит ваш ответ. – karthick87 24 January 2012 в 22:03
  • 2
    Смотрите, что статический IP-адрес настроен на всех компьютерах, которые я не хочу назначать сейчас. Я просто хочу изменить имена хостов. – karthick87 25 January 2012 в 19:52

Другие вопросы по тегам:

Похожие вопросы: