Я хочу изменить / etc / hosts (и позже также имя хоста) с помощью скрипта и ssh. Итак, я зарегистрировался через ssh, и это работает:
sudo nano /etc/hosts
Он показывает файл удаленных хостов в nano. Однако я пытался это сделать (через командную строку, но это должно работать, чтобы заставить его работать в скрипте правильно?):
echo [mypassword] | sudo -S nano /etc/hosts
, но получить этот вывод:
Recieved SIGHUP or SIGTERM
Buffer written to /etc/hosts.save
[d3 ] Я просто видел, что это также происходит с более простыми текстовыми файлами (например, test.txt). Любые идеи, как это исправить? И да, я знаю об отсутствии секретности пароля. :)
Спасибо заранее
Я предлагаю использовать passwordless sudo, чем писать свой пароль при явной печати в скрипте.
В сценарии используйте эхо для записи в текстовый файл, а не nano.
нравится
#!/bin/bash
echo 'text to write to /etc/hosts' > /etc/hosts
или я правильно понял вашу цель?
Я нашел команду tee полезной для предотвращения ограничения sudo при перенаправлении файлов.
Это команда, которую я использовал для удаленного добавления хостов для всех машин в моем кластере в / etc / hosts:
for i in {1..10}; do ssh ubuntu@10.1.1.$i -t "echo '10.1.1.1 dev-1
10.1.1.4 dev-4
10.1.1.3 dev-3
10.1.1.2 dev-2
10.1.1.6 dev-6
10.1.1.8 dev-8
10.1.1.5 dev-5
10.1.1.10 dev-10
10.1.1.9 dev-9
10.1.1.7 dev-7' | sudo tee -a /etc/hosts >/dev/null"
Выход для каждой итерации выглядит следующим образом: [ ! d2]
0+1 records in
0+1 records out
255 bytes (255 B) copied, 4.1338e-05 s, 6.2 MB/s
Этот ответ SU был ключевым в создании моего окончательного решения: https://superuser.com/a/1026359/587485