Я очень новичок в Bash и пытаюсь запросить несколько маршрутизаторов, используя SNMP, и запросить их имя хоста, местоположение GPS, а также метку времени последнего обновления GPS. А затем, в конечном счете, передайте это в базу данных вместе с другой информацией, которая будет запрашиваться программным обеспечением для отображения местоположения маршрутизаторов на карте.
Пока у меня есть скрипт, который запрашивает маршрутизаторы с использованием snmpget и выводит это в командной строке.
Это то, что я до сих пор. Как я уже сказал, я новичок в этом, поэтому он, вероятно, полон дыр.
# Create an array of RUT IP addresses
declare -a SNMPHOSTS=(xx.xxx.xxx.xx xx.xxx.xxx.xx)
# Create an array of the OID's we need, first the hostname then the GPS lat, long and datestamp
declare -a OIDS=(.1.3.6.1.4.1.48690.1.7.0 .1.3.6.1.4.1.48690.6.2.0 .1.3.6.1.4.1.48690.6.1.0 .1.3.6.1.4.1.48690.6.4.0 )
# Create the snmpget options
snmpoptions='-v2c -Oqv -c public'
#Iterate through the OIDS array
for host in "${SNMPHOSTS[@]}"
do
printf "\n"
for oid in "${OIDS[@]}"
do
# snmpget $options $host $ip | strip "" quotes
snmpget $snmpoptions $host $oid | tr -d '"'
done
done
Это выводит следующее. (Только 1 маршрутизатор имеет блокировку, поэтому второй отображается как неизвестный, но пока это нормально.)
TWE-Meigle
55.630778
-3.057176
2020-04-09 08:19:00
TWE-SUB
unknown
unknown
unknown
То, что я сейчас пытаюсь сделать, это создать массив и передать его MySQL вместе с другой информацией, необходимой для картографического программного обеспечения.
Моя структура базы данных:
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Time` int(11) NOT NULL,
`RadioID` int(11) NOT NULL,
`ValidFor` int(11) NOT NULL,
`SigStrength` int(11) NOT NULL,
`Status` int(11) NOT NULL,
`X` int(11) NOT NULL,
`Y` int(11) NOT NULL,
`DeviceType` enum('Radio','Phone','SARLOC','Spot','Aircraft') NOT NULL DEFAULT 'Radio',
The ID is auto increment
The Time I will convert to epoch
Radio ID I can add by taking the hostname and replacing with ID.
Valid For I can add a value
Signal Strength can be 0
Status will be 1
X Eastings from Cornwall so will need to convert lat/long to this
Y Northings
Device Type will be Radio
Так что мне нужно извлечь из snmpget только имя хоста, время и X и Y, остальные - это stati c значений, которые я могу добавить.
Таким образом, я думаю, что это нужно сделать, это построить массив с некоторыми данными из snmpget, смешанными с другими значениями, и это я борется с. Как только я получу это, я смогу повторить это и перейти к базе данных.
Я гуглил эти загрузки и, похоже, просто не могу найти, как передать результат snmpget в массив и это то, что я застрял и был бы признателен за несколько советов о том, как действовать. Как я уже сказал, я очень новичок в этом.
Большое спасибо,