我有一个小程序,可以获取正在侦听不同端口的 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