저는 매우 간단한 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