Você pode usar o comando "cat" para criar o arquivo remoto.
echo 'Some Text' | ssh user@remotehost "cat > /remotefile.txt"
Eu posso copiar um arquivo para uma máquina Linux remota sem problemas com
scp file user@host: /pathtowrite_file
No entanto, estou tendo dificuldades para gravar em um arquivo de uma máquina linux para outra. Aqui está o que eu tentei:
echo 'Some Text' > /remotefile.txt | ssh user@remotehost
O aviso que recebo é
stdin: is not a tty
De qualquer forma, o arquivo na máquina remota não reflete o texto enviado 'Some Text'.
Um pouco mais curto que a outra resposta:
ssh user@remotehost "echo Some Text > /remotefile.txt"
Também é possível usar dd para anexar a um arquivo. Talvez um pouco obscuro, mas útil se o redirecionamento de saída no host remoto não for possível.
cat ~/.ssh/id_rsa.pub | ssh [email protected] 'dd of=.ssh/authorized_keys oflag=append conv=notrunc'
Este exemplo acrescenta sua chave pública ao arquivo authorized_keys no host remoto.
(Fonte: link )
Isso levará o conteúdo da sua área de transferência em um Mac e o anexará ao final de um arquivo remotamente:
pbpaste | ssh [email protected] 'cat >> ~/.ssh/authorized_keys'
Isso permite escrever (anexar) ao final de um arquivo em um host remoto:
echo "Append string to file" | ssh [email protected] 'cat >> ~/.ssh/authorized_keys'
Se tiver que ser usado várias vezes, pode ser mais fácil usar esse código. Com a ferramenta "sshpass", o ssh não solicitará uma senha para cada chamada do script. (a menos que você precise manter isso em segredo, então é melhor não usá-lo)
Para mais informações sobre o sshpass: link
#!/bin/bash
SCRIPT="echo 'nameserver 8.8.8.8' > /etc/resolv.conf"
if [ "$#" -ne 1 ]; then
echo "Wrong number of arguments. usage: prog dest_machine"
else
sshpass -p "root" ssh -o StrictHostKeyChecking=no root@"$1" "${SCRIPT}"
fi
Você pode simplesmente usar o editor vi
ou nano
ou pico
:
# Just replace "vi" with "nano" or "pico" if you want to use them.
vi remotefile.txt
No entanto, você terá que escrever Some Text
no editor sozinho, então este processo não é realmente compatível com lotes.
Crie um script como abaixo:
# !/bin/bash
read -p "Enter target server IP : " server
echo "Enter root password for $server : " ; read -s password
yum install sshpass -y
sshpass -p "$password" ssh -o strictHostKeyChecking=no root@$server echo "your text goes here" >> /remotefile.txt