컨트롤러 컴퓨터에서 cmd를 실행할 때
Controller> echo DateTime Rd_avgMsec Wr_avgMsec; stats --diff --sho --int 60 --perf e2lxsplunkinx02-Hotdata --iosize --from 2016-10-11,00:00:00 --to 2016-10-11,00:03:00 | awk 'BEGIN{c=0} /^[0-9]|_avg/ {if (/^[0-9]/){printf "%s", $1;c++}else{ printf " %s", $NF/1000; c++ ; if(c==3){print ""; c=0}}}'
다음과 같은 결과가 나타납니다.
DateTime Rd_avgMsec Wr_avgMsec
2016-10-11,00:01:00 2.732 0.21
2016-10-11,00:02:00 1.919 0.294
2016-10-11,00:03:00 1.856 0.22
하지만 컨트롤러 시스템에서 동일한 명령을 원격으로 실행하려고 하면 오류가 발생합니다 "awk: cmd. line:1: Unexpected token"
. launchpad01 Linux 시스템에서 원격으로 cmd를 실행하려고 합니다. 누구든지 이 오류를 해결하도록 도와줄 수 있나요?
[root@launchpad01 ~]# ssh admin@Controller "echo DateTime Rd_avgMsec Wr_avgMsec; stats --diff --sho --int 60 --perf e2lxsplunkinx02-Hotdata --iosize --from 2016-10-11,00:00:00 --to 2016-10-11,00:03:00 | awk 'BEGIN{c=0} /^[0-9]|_avg/ {if (/^[0-9]/){printf "%s", $1;c++}else{ printf " %s", $NF/1000; c++ ; if(c==3){print ""; c=0}}}'"
Warning: Permanently added 'Controller' (RSA) to the list of known hosts.
Password:
DateTime Rd_avgMsec Wr_avgMsec
awk: cmd. line:1: Unexpected token
답변1
인용 문제입니다. 이 경우 가장 간단한 해결책은 awk 파이프라인을 로컬에서 실행하는 것입니다.
ssh admin@Controller "stats --diff --sho --int 60 --perf e2lxsplunkinx02-Hotdata --iosize --from 2016-10-11,00:00:00 --to 2016-10-11,00:03:00" |\
awk 'BEGIN{c=0; print "DateTime","Rd_avgMsec","Wr_avgMsec";} /^[0-9]|_avg/ {if (/^[0-9]/){printf "%s", $1;c++}else{ printf " %s", $NF/1000; c++ ; if(c==3){print ""; c=0}}}'
답변2
제안된 대로 awk 파이프라인을 로컬에서 실행하지 않으려는 경우루디 메이어대답은 명령에서 큰따옴표를 이스케이프 처리해 보십시오.
ssh admin@Controller "echo DateTime Rd_avgMsec Wr_avgMsec; \
stats --diff --sho --int 60 --perf e2lxsplunkinx02-Hotdata --iosize --from 2016-10-11,00:00:00 --to 2016-10-11,00:03:00 | \
awk 'BEGIN{c=0} /^[0-9]|_avg/ {if (/^[0-9]/){printf \"%s\", $1;c++}else{ printf \" %s\", $NF/1000; c++ ; if(c==3){print \"\"; c=0}}}'"