BASH Как передать вывод snmpget в базу данных MySQL - PullRequest
0 голосов
/ 09 апреля 2020

Я очень новичок в 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 в массив и это то, что я застрял и был бы признателен за несколько советов о том, как действовать. Как я уже сказал, я очень новичок в этом.

Большое спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...