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

Я хочу изменить / etc / hosts (а позже и hostname) через скрипт и ssh. Итак, я вошел через ssh, и это работает:

sudo nano /etc/hosts

Показывает файл удаленных хостов в nano. Однако я пытался это (через командную строку, но это должно работать, чтобы заставить его работать в сценарии правильно?):

echo [mypassword] | sudo -S nano /etc/hosts

, но получить этот вывод:

Recieved SIGHUP or SIGTERM

Buffer written to /etc/hosts.save

только что увидел, что это также происходит с более простыми текстовыми файлами (например, test.txt). Есть идеи, как это исправить?

И да, я знаю о незащищенности пароля. :)

Заранее спасибо

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

3 ответа

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

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

как

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

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

0
ответ дан 21 July 2013 в 11:52

Что мне помогло, так это запись во временный файл и его замена / etc / hosts

#!/bin/bash

# $1: IP of the new host
# $2: name of the new host

# read current /etc/hosts int temp-file
cat /etc/hosts > tmphost
# add new entry to temp-file
echo "$1 $2" >> tmphost
# replace hosts file
sudo cp tmphost /etc/hosts
# remove temp-file
rm tmphost

, как предложил @Pasi, для этого требуется sudo без пароля

0
ответ дан 21 July 2013 в 11:52

Я обнаружил, что команда 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" 

Вывод для каждой итерации выглядит следующим образом:

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
ответ дан 21 July 2013 в 11:52

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

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