2016-03-07 26 views
0

我创建了一个bash脚本,它通过telnet将日志记录到服务器中。现在我想输入cat $var >> /path/on/server/a.log. $ var get在进入telnet会话之前在bash脚本中指定。不知何故输出"sh: ---------------------------: not found“是在远程登录会话中创建的Telnet中的变量

我想这是因为我的file.log有多行,第二行是”---------------“ 。

这里是我的脚本:

#!/bin/bash 
var=$(cat /path/to/local/file.log) 
sleep 1 
sh << EOF | telnet 192.168.178.72 
sleep 2 
echo user 
sleep 1 
echo pass 
sleep 5 
# echo "$var" >> /path/on/server/file.log (Can't Test because saving the var is not working) 
sleep 5 
EOF 

我的最终目标是让file.log到服务器连接的唯一方法就是通过telnet客户端不支持SSH或rsync的或任何东西。 。编号: 更多信息:

该脚本不必在客户端上运行。我也可以在服务器上运行它。我更喜欢在客户端运行脚本。

+0

您应该考虑使用[pexpect](https://pexpect.readthedocs.org/en/stable/)或原始[expect](http://expect.sourceforge.net/) –

回答

0

我建议的方法,例如这样的:

#!/bin/bash 
(
echo "telnet 192.168.178.72" 
sleep 2 
echo user 
sleep 1 
echo pass 
sleep 5 
echo "cat >> /path/on/server/file.log" 
sleep 5 
cat /path/to/local/file.log 
) | sh 

注意,有一些潜在该清盘远程服务器上执行的/path/to/local/file.log内容。我强烈建议你考虑一下这个安全问题,或许会找到一些更好的方法。

+0

':找不到 sh :Raspbian:找不到' 不适合我。我从我的KathreinUfs910连接到我的Raspberry与raspbian。我多数民众赞成是为什么它显示的东西与raspbian我猜。 我知道这不安全,但它在我自己的家中。我创建了file.log,我知道它会是什么。 – user3715758

+0

这个远程登录到远程主机,然后等待,直到该会话终止,然后运行'sleep 2'等。我不认为这是OP的要求。 – chepner

+0

@chepner:谢谢,修正。 –