- meu entendimento é que a segunda parte do seu código dá um PID, e você quer aplicá-lo.
- e também o ps duplo é um erro de digitação.
algo como
while read -r -u10 server port line
do
echo ========== server: "$server" port: "$port" ==========
pid=$(ssh -qn "$server" "netstat -tulpunt | grep -E ":$port "" | \
awk '{print $7}' | grep '/' | awk -F "/" '{print $1}' )
echo "PID: $pid"
ssh -qn "$server" "ps -ef | grep $pid"
echo
done 10< demo
notas
- que o grep irá grep (você pode querer adicionar
| grep -v grep
no final) - Não sei se a sintaxe
$( ... )
pode espalhar linhas.
EDITAR:
nesse caso, tente
ssh -qn "$server" "netstat -tulpunt | awk '/:"$port"/ { split(\,A,\"/\" ) ; printf \"ps -p %d\n\",A[1]}' | bash "
que é intuitivo silencioso.
- o recurso grep do awk
/:"$port"/
irá capturar a porta - split, escolherá o PID em A [1]
- finalmente, usamos
ps -p %d -f --no-headers
para emularps -ef | grep PID
- e nós o demos ao remoto
bash