Я пишу сценарий, который хранит данные клиентского подключения, такие как идентификатор сеанса, сервер и порт, в ассоциативном массиве. Мне нужно установить s sh на эти хосты и запустить команду lsof, чтобы узнать, какой процесс использует этот порт.
declare -A HOSTMAP
HOSTMAP[session]=$session_ids
HOSTMAP[cname]=$cnames
HOSTMAP[port]=$ports
При печати данные в массиве отображаются так (имена хостов и порты были изменены для защиты невиновных)
for g in "${!HOSTMAP[@]}"
do
printf "[%s]=%s\n" "$g" "${HOSTMAP[$g]}"
done
[cname]=hostname1
hostname2
hostname3
hostname4
hostname5
hostname6
hostname7
hostname8
[session]=44
5
3
9
14
71
65
47
[port]=11111
22222
33333
44444
55555
66666
77777
88888
Я бы хотел сделать операция, похожая на следующую:
for session in $session_id
do
echo "Discovering application mapped to session ${session} on ${cname}:${port}"
ssh -tq ${cname} "lsof -Tcp | grep ${port}"
done
Заранее большое спасибо за совет по элегантному решению