Добавить вывод команды Hostname в /etc/hosts

У меня есть сервер в Amazon Elastic Beanstalk, на котором команда hostname выводит имя хоста, которое не является полным доменом и не существует в файле /etc/host.

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

Я хотел добавить вывод команды hostname в файл /etc/hosts со ссылкой на локальный компьютер.

Сейчас у меня есть хост-файл, который выглядит так:

127.0.0.1 localhost localhost.localdomain

Я запускаю такую ​​​​команду, чтобы добавить в файл.

hostname | tr '\n' ' ' >> /etc/hosts

Проблема в том, что имя хоста добавляется как новая строка. Так:

127.0.0.1 localhost localhost.localdomain
ip-10-0-1-162

Я хочу, чтобы он добавлялся к той же строке.


person lordmj    schedule 16.02.2016    source источник


Ответы (2)


Вы можете использовать sed для редактирования первой строки файла:

sed -i "1s/$/ $(hostname | tr '\n' ' ')/" /etc/hosts
person Joao Morais    schedule 16.02.2016

Вы можете использовать что-то вроде

echo "`cat /etc/hosts` `hostname`"

Возможно, вы сможете записать это прямо в /etc/hosts, но я лучше запишу это во временный файл, а затем заменю им /etc/hosts.

Если вы не хотите, чтобы в конце файла не было новой строки, используйте

echo -n

вместо.

Это предполагает, что вы хотите добавить к последней строке в файле.

person jsfan    schedule 16.02.2016
comment
Если бы я хотел, чтобы однострочная команда выполняла этот метод, как бы я это сделал? - person lordmj; 17.02.2016