В примере будем использовать передачу трех состояний рабочих мест в 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

Создаем три сценария (Справочники  - Сценарии ) с типом исполнителя Сервер.

и добавляем команду типа скрипт  с соответствующим скриптом.

заполняем значения для специальных параметров ранее определенных в скриптах:

ИмяЗначение
wshostnameWS.Hostname
wsipsjoin(NAC.WNAM.IPAddresses,",")
wsmacsjoin(NAC.WNAM.MACAddresses,",")

Создаем интеграцию с WNAM (Интеграции - Интеграции NAC)

Выбираем тип интеграции  WNAM (Netams)


и заполняем матрицу реагирования ранее созданными сценариями.





  • No labels