使用ssh将变量发送到远程服务器

时间:2012-09-30 21:34:18

标签: bash ssh

我试图登录文件(在远程服务器中让/home/test/log.txt)存储在$ var中。我正在尝试

ssh test@$192.168.1.35 "echo "var" >> /home/test/log.txt"

你也试过

 ssh test@$192.168.1.35 "echo "$var" >> log.txt"

但两者都没有用

任何帮助?

4 个答案:

答案 0 :(得分:6)

您使用的是双引号,因此变量扩展将在本地进行。您应该使用单引号,以便命令不会发送。

echo '$var'给出$varecho "$var"显示内容的方式相同,这样服务器就会看到$var而不是本地{{1}的内容}。

所以:

$var

将在远程计算机上创建一个文件,其中包含远程ssh test@$192.168.1.35 'echo $var >> /home/test/log.txt'的值。

如果你这样做

$var

您在本地计算机上获得了一个文件,其中包含远程ssh test@$192.168.1.35 'echo $var' >> /home/test/log.txt的值。

如果你这样做

$var

它将本地ssh test@$192.168.1.35 "echo $var >> /home/test/log.txt"的值存储在远程系统上的文件中。

(另外,如果它只涉及远程系统,你应该使用shell脚本,或者如果你想让它自动发生,你可能会使用cron。)

答案 1 :(得分:1)

尝试:

ssh test@192.168.1.35 "echo '$var' >> /home/test/log.txt"

答案 2 :(得分:0)

你有没有尝试过:

ssh test@$192.168.1.35 'echo "$var" >> /home/test/log.txt'

这应该有效。假设您的计算机上设置了var,而不是遥控器。

答案 3 :(得分:0)

以下是将Linux机器中的某些文本放在另一台Linux机器上现有文件中的正确方法:

echo 'text' | ssh test@$192.168.1.35 'cat >> /remote_file_path'