В примере будем использовать передачу трех состояний рабочих мест в WNAM 2. Без Нарушений, критическое и oфлайн.
Создаем три скрипта (Справочники - Скрипты) для каждого стостояния.
Без нарушений
#!/bin/bash
get_token() {
token=`curl -k -s -X POST -H "Content-Type: application/json" -d '{"username":"'$wnamlogin'","password":"'$wnampassword'"}' https://$wnam_address/api/2.0/authenticate | jq -r .access_token`
echo $token > /tmp/token
}
STATUS="100"
wnamlogin="admin"
wnampassword="admin"
wnam_address="172.16.133.12"
if [ ! -f /tmp/token ]; then
get_token
fi
access_token=`cat /tmp/token`
status=`curl -s -w "%{http_code}" -k -X POST -H "Content-Type: application/json" -H "Authorization: Bearer "$access_token -d "{\"hostname\":\"$1\",\"ARM_IP\":\"$2\",\"ARM_MAC\":\"$3\",\"status\":\"$STATUS\"}" https://$wnam_address/api/2.0/sakura_state`
if [ "$status" -eq 401 ]; then
get_token
access_token=`cat /tmp/token`
curl -s -k -X POST -H "Content-Type: application/json" -H "Authorization: Bearer "$access_token -d "{\"hostname\":\"$1\",\"ARM_IP\":\"$2\",\"ARM_MAC\":\"$3\",\"status\":\"$STATUS\"}" https://$wnam_address/api/2.0/sakura_state
fi
Критическое
#!/bin/bash
get_token() {
token=`curl -k -s -X POST -H "Content-Type: application/json" -d '{"username":"'$wnamlogin'","password":"'$wnampassword'"}' https://$wnam_address/api/2.0/authenticate | jq -r .access_token`
echo $token > /tmp/token
}
STATUS="1"
wnamlogin="admin"
wnampassword="admin"
wnam_address="172.16.133.12"
if [ ! -f /tmp/token ]; then
get_token
fi
access_token=`cat /tmp/token`
status=`curl -s -w "%{http_code}" -k -X POST -H "Content-Type: application/json" -H "Authorization: Bearer "$access_token -d "{\"hostname\":\"$1\",\"ARM_IP\":\"$2\",\"ARM_MAC\":\"$3\",\"status\":\"$STATUS\"}" https://$wnam_address/api/2.0/sakura_state`
if [ "$status" -eq 401 ]; then
get_token
access_token=`cat /tmp/token`
curl -s -k -X POST -H "Content-Type: application/json" -H "Authorization: Bearer "$access_token -d "{\"hostname\":\"$1\",\"ARM_IP\":\"$2\",\"ARM_MAC\":\"$3\",\"status\":\"$STATUS\"}" https://$wnam_address/api/2.0/sakura_state
fi
офлайн
#!/bin/bash
get_token() {
token=`curl -k -s -X POST -H "Content-Type: application/json" -d '{"username":"'$wnamlogin'","password":"'$wnampassword'"}' https://$wnam_address/api/2.0/authenticate | jq -r .access_token`
echo $token > /tmp/token
}
STATUS="0"
wnamlogin="admin"
wnampassword="admin"
wnam_address="172.16.133.12"
if [ ! -f /tmp/token ]; then
get_token
fi
access_token=`cat /tmp/token``
status=`curl -s -w "%{http_code}" -k -X POST -H "Content-Type: application/json" -H "Authorization: Bearer "$access_token -d "{\"hostname\":\"$1\",\"ARM_IP\":\"$2\",\"ARM_MAC\":\"$3\",\"status\":\"$STATUS\"}" https://$wnam_address/api/2.0/sakura_state`
if [ "$status" -eq 401 ]; then
get_token
access_token=`cat /tmp/token`
curl -s -k -X POST -H "Content-Type: application/json" -H "Authorization: Bearer "$access_token -d "{\"hostname\":\"$1\",\"ARM_IP\":\"$2\",\"ARM_MAC\":\"$3\",\"status\":\"$STATUS\"}" https://$wnam_address/api/2.0/sakura_state
fi
В скрпиптах нужно поменять адрес сервера WNAM и реквизиты доступа к нему.
Также в каждый скрипт добавляем специальные параметры: wshostname,wsips,wsmacs (именно в таком порядке) без заполнения параметров.
Для работы скриптов на сервере должны быть установлены curl и jq
Создаем три сценария (Справочники - Сценарии ) с типом исполнителя Сервер.
и добавляем команду типа скрипт с соответствующим скриптом.
заполняем значения для специальных параметров ранее определенных в скриптах:
| Имя | Значение |
|---|---|
| wshostname | WS.Hostname |
| wsips | join(NAC.WNAM.IPAddresses,",") |
| wsmacs | join(NAC.WNAM.MACAddresses,",") |
Создаем интеграцию с WNAM (Интеграции - Интеграции NAC)
Выбираем тип интеграции WNAM (Netams)
и заполняем матрицу реагирования ранее созданными сценариями.




