我可以毫无问题地将文件复制到远程Linux机器
scp file user@host: /pathtowrite_file
但是,我在将文件从一台 Linux 计算机写入另一台 Linux 计算机时遇到了困难。以下是我尝试的操作:
echo 'Some Text' > /remotefile.txt | ssh user@remotehost
我收到的通知是
stdin:不是 tty
无论如何,远程机器上的文件不会反映发送的文本“某些文本”。
答案1
您可以使用“cat”命令来创建远程文件。
echo 'Some Text' | ssh user@remotehost -T "cat > /remotefile.txt"
禁用-T
伪终端分配并阻止你获取消息,
不会分配伪终端,因为 stdin 不是终端。
答案2
比其他答案短一点:
ssh user@remotehost "echo Some Text > /remotefile.txt"
答案3
也可以使用日附加到文件。可能有点晦涩,但如果无法在远程主机上进行输出重定向,则很有用。
cat ~/.ssh/id_rsa.pub | ssh [email protected] 'dd of=.ssh/authorized_keys oflag=append conv=notrunc'
此示例将您的公钥附加到远程主机上的authorized_keys文件。
答案4
如果必须多次使用,使用此代码可能会更容易。使用“sshpass”工具,ssh 不会在每次调用脚本时提示您输入密码。(除非您需要保密,否则最好不要使用它)
有关 sshpass 的更多信息: https://stackoverflow.com/questions/12202587/automatically-enter-ssh-password-with-script
#!/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