我正在运行一个非常简单的 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