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

おすすめ記事