редактировать текстовый файл с помощью sudo через ssh и script

Я хочу изменить / 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). Любые идеи, как это исправить?

И да, я знаю об отсутствии секретности пароля. :)

Спасибо заранее

1
задан 21 July 2013 в 12:52

2 ответа

Я предлагаю использовать passwordless sudo, чем писать свой пароль при явной печати в скрипте.

В сценарии используйте эхо для записи в текстовый файл, а не nano.

нравится

#!/bin/bash
echo 'text to write to /etc/hosts' > /etc/hosts

или я правильно понял вашу цель?

1
ответ дан 24 May 2018 в 19:49
  • 1
    Извини за поздний ответ. Это то, что я хочу сделать, но ввод вашего кода в терминал дает " / etc / hosts: Permission denied & quot ;. passwordless sudo работает, поскольку меня не просят ввести пароль при выполнении sudo – sotix 26 July 2013 в 20:52
  • 2
    [F1]. Кроме того, я полагаю, что OP хотел бы добавить (>>), а не переписать (>) файл. – moon.musick 20 August 2013 в 13:49

Я нашел команду 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

0
ответ дан 24 May 2018 в 19:49
  • 1
    Почему sudo echo? И dd кажется немного выше вершины для небольшого перенаправления вывода. Рекомендуемый способ перенаправления-добавления вывода в качестве суперпользователя находится в строках sudo tee -a FILE >/dev/null или sudo sh -c "exec cat >> FILE". – David Foerster 29 September 2016 в 23:23
  • 2
    @DavidFoerster Судо было остатком предыдущей работы, и я согласен, тройник - немного лучшее решение, поэтому я обновил ответ. – Garren 29 September 2016 в 23:50

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

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