使用 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'


> 

有没有办法在本地计算机和远程计算机上运行相同的命令?

A

答案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

相关内容