awk 원격 for 루프 사용

awk 원격 for 루프 사용

서로 다른 포트에서 수신 대기 중인 3개 프로세스의 PID를 가져오는 작은 프로그램이 있습니다.

Admins-Mac-mini-2:~ gitlabuser$ for pn in 23 33 43; do lsof -nP -iTCP:47${pn} | grep LISTEN | awk '{print $2}'; done
44171
44176
44181
Admins-Mac-mini-2:~

나는 이 작은 루프를 다른 컴퓨터에서 실행하고 싶었기 때문에 awk에서 다음과 같이 백슬래시 주위에 작은따옴표를 인쇄하려고 했습니다.

Admins-Mac-mini-2:~ gitlabuser$ ssh [email protected] 'for pn in 23 33 43; do lsof -nP -iTCP:47${pn} | grep LISTEN | awk \'{print $2}\'; done'
> 

나는 또한 백슬래시를 시도했다 $:

Admins-Mac-mini-2:~ gitlabuser$ ssh [email protected] 'for pn in 23 33 43; do lsof -nP -iTCP:47${pn} | grep LISTEN | awk \'{print \$2}\'; done'


> 

로컬 시스템과 원격 시스템 모두에서 동일한 명령을 실행하는 방법이 있습니까?

답변1

다음 방법을 사용할 수 있습니다.

for i in remoteserverip
do
ssh -o 'StrictHostKeyChecking no' $i <<'EOF'
for pn in 23 33 43
do
lsof -nP -iTCP:47${pn} | grep LISTEN | awk '{print $2}'
done
EOF
done

관련 정보