Telnet BASH 脚本 - 输出未保存

Telnet BASH 脚本 - 输出未保存

我正在运行一个非常简单的 telnet bash 脚本并且它可以工作。

#!/bin/sh
host=90.205.177.129
port=23
login=admin
passwd=Sky.2015
#cmd1=sh
cmd2=meminfo > /tmp/top.txt

echo open ${host} ${port}
sleep 5
echo ${login}
sleep 5
echo ${passwd}
sleep 10
#echo ${cmd1}
#sleep 5
echo ${cmd2}
sleep 20
echo exit

但是,meminfo 的输出不会复制到“top.txt”文件中。文件已创建

root@raspberrypi:/etc/my_scripts# ls -l /tmp/
total 12
-rw-r--r-- 1 root root 784 Oct 13 14:32 1wall_test1_S.txt
-rw-r--r-- 1 root root 216 Oct 14 11:28 test_l.txt
-rw-r--r-- 1 root root 216 Oct 14 11:37 test_s.txt
-rwxrwxrwx 1 root root   0 Oct 15 09:35 top.txt
root@raspberrypi:/etc/my_scripts#

有什么建议吗?

答案1

问题在于

cmd2=meminfo > /tmp/top.txt

这实际上将变量设置cmd2内存信息并评估重定向。你应该引用这个。

cmd2='meminfo > /tmp/top.txt'

编辑:这将在目标上创建文件。根据您自己的答案,您想在运行脚本的系统上创建它(在您的原始问题中未说明)。原因仍然有效,但解决方案却不再有效。

答案2

用于alias cmd2="meminfo > /tmp/top.txt"创建别名命令,而不是使用名为 的环境变量cmd2

答案3

我自己找到了解决方案:)

./telnet.sh | telnet > /tmp/top.txt 

通过这种方式,我将命令重定向到输出文件。但是,我必须多次运行相同的脚本,并且我不想覆盖相同的文件,但我会创建增量文件(好主意将使用 DATE 命令重命名)。

使用日期选项

./telnet.sh | telnet > /tmp/top-$(date +%Y%m%d-%T).txt

相关内容