SSH를 두 번 실행하고 명령을 실행하면 문자가 이스케이프됩니까?

SSH를 두 번 실행하고 명령을 실행하면 문자가 이스케이프됩니까?

터미널에서 다음 명령을 실행하여 원하는 출력을 얻을 수 있습니다.

top -bn 1 | grep "^ " | awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); }' | head -n 6

터미널에서 다음 명령을 실행하여 SSH를 두 번 실행하고 호스트 이름을 얻을 수 있습니다.

ssh 192.168.5.209 "ssh 192.168.5.210 exec \"hostname\""

209는 포털처럼 작동하므로 209에서 210까지 SSH만 가능합니다. 하지만 문제는 "hostname"을 위에서 작성한 최상위 명령으로 바꾸는 방법입니다. 특수문자가 너무 많아요.

PHP에서 실행할 스크립트를 작성 중입니다.

답변1

grep, awk 및 head를 결합하여 로컬에서 실행할 수 있습니다.

 ssh 192.168.5.209 "ssh 192.168.5.210 top -bn 1 " |
 awk '/^ / { printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); c++ ; if (c==6) exit ;} 

어디

  • /^ /공백으로 시작하는 줄 검색
  • c++ ; if (c==6) exit ;Awk는 6줄을 인쇄한 후 종료됩니다.

관련 정보