2016-12-02 3 views
0

У меня нет пароля ssh, который разрешен между моими двумя серверами a и b. Поэтому я использую sshpass для подключения к серверу b из a.Измените файл/etc/hosts с помощью сценария оболочки

У меня есть требование добавить записи хоста в/etc/hosts сервера b из. Но пользователь, который я регистрирую на сервере b, является пользователем без полномочий root, но имеет права sudo для редактирования файлов, принадлежащих root.

Как добавить записи хоста в/etc/hosts сервера b с сервера a через скрипт оболочки при использовании sshpass.

Вот сценарий, который был судим:

#!/bin/bash 

export SSHPASS="password" 
SSHUSER=ciuser 
WPC_IP=10.8.150.28 

sshpass -e ssh -o UserKnownHostsFile=/dev/null -o 'StrictHostKeyChecking no' [email protected]$WPC_IP "echo test >> /etc/hosts" 

Выход:

bash test.sh 
Warning: Permanently added '10.8.150.28' (RSA) to the list of known hosts. 
bash: /etc/hosts: Permission denied 

Спасибо.

+0

Можете ли вы опубликовать команду, которую вы пробовали, и как она потерпела неудачу? –

+0

@thatotherguy: обновленный вопрос. благодаря – user2714227

ответ

1

sudodoesn't work with redirects напрямую, так что вы можете использовать sudo tee -a для добавления в файл:

echo '1.2.3.4 test' | sudo tee -a /etc/hosts 

В вашей команде, это было бы:

sshpass -e ssh -o UserKnownHostsFile=/dev/null -o 'StrictHostKeyChecking no' "[email protected]$WPC_IP" "echo test | sudo tee -a /etc/hosts" 

Обратите внимание, что для этого требуется доступ без пароля SUDO без tty, что не обязательно совпадает с вашими привилегиями sudo.