edita o arquivo de texto com sudo via ssh e script

1

Eu quero modificar o / etc / hosts (e mais tarde também o nome do host) por meio de um script e um ssh. Então estou logado via ssh e isso funciona:

sudo nano /etc/hosts

Mostra o arquivo de hosts remotos no nano. No entanto eu estava tentando isso (via linha de comando, mas isso deve funcionar para fazê-lo funcionar em um script certo?):

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

mas obtenha esta saída:

Recieved SIGHUP or SIGTERM

Buffer written to /etc/hosts.save

Acabei de ver que isso também acontece com arquivos de texto mais simples (por exemplo, test.txt). Alguma idéia de como consertar isso?

E sim, estou ciente da insegurança da senha clara. :)

Obrigado antecipadamente

    
por sotix 21.07.2013 / 09:52

3 respostas

0

O que funcionou para mim é escrever em um arquivo temporário e substituir o / etc / hosts por ele

#!/bin/bash

# : IP of the new host
# : name of the new host

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

como @Pasi sugeriu, isso precisa de sudo sem senha

    
por sotix 20.08.2013 / 08:53
1

Sugiro usar o sudo sem senha do que gravar sua senha em um script de digitação simples.

No script, use o echo para gravar no arquivo de texto, não no nano.

como

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

ou eu consegui o seu propósito?

    
por Pasi Suominen 21.07.2013 / 11:57
0

Eu achei o comando tee útil para evitar a limitação de sudo no redirecionamento de arquivos.

Este é o comando que usei para anexar remotamente os hosts de todas as máquinas no meu cluster a / etc / hosts:

for i in {1..10}; do ssh [email protected].$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" 

A saída para cada iteração é semelhante a:

0+1 records in
0+1 records out
255 bytes (255 B) copied, 4.1338e-05 s, 6.2 MB/s

Essa resposta da SU foi fundamental na criação da minha solução final: link

    
por Garren 29.09.2016 / 21:42