измените таблицу арендного договора DHCP со сценарием и sed

Dears,

Я имею в арендных договорах файла арендного договора dhcp, как следующий пример:

lease 192.168.79.15 {
  starts 0 2016/08/21 13:25:45;
  ends 0 2016/08/21 19:25:45;
  cltt 0 2016/08/21 13:25:45;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 8c:1a:bf:11:00:ea;
  uid "\001\214\032\277\021\000\352";
  option agent.circuit-id 0:17;
  option agent.remote-id c0:a8:9:5;
  client-hostname “android-8182e21c852776e7";

Я должен смочь изменить agent.remote-идентификационные фиксированные значения опции на строку прежде, чем отправить этот файл где-то в другом месте с помощью, и также, если это возможно, к тайному полю идентификатора схемы к двоичному файлу от шестнадцатеричного числа. Думая о первом, что нужно сделать, я пытался заставить сценарий любить, следует, но не работа:

#!/bin/bash

VAR1=“/var/lib/dhcp/dhcpd.leases”
VAR2=“c0:a8:9:2”
VAR3=“c0:a8:9:3”
VAR4=“c0:a8:9:4”
VAR5=“c0:a8:9:5”
VAR6=“c0:a8:9:6”
VAR7=“c0:a8:9:7”


sed -e ’s/${VAR2}/AOD-ADMIN-OFFICE/g; s/${VAR3}/GOLF-MAINTENANCE-BUILDING/g; s/${VAR4}/MARINA-DRY-STACK/g;s/${VAR5}/DC-SERVICE-ROOM/g;s/${VAR6}/ACPM-ADMIN-OFFICE/g;s/${VAR7}/SEA-WATER-OFFICE/g’ ${VAR1}    
0
задан 1 September 2016 в 13:35

1 ответ

Ваш первый выпуск - то, что строки в Ваших переменных присвоениях используют символы кавычки неASCII. Из-за этого, sed пытается соответствовать “c0:a8:9:2” вместо c0:a8:9:2.

Кроме того, я действительно не вижу точку определения большого количества переменных для этого; по моему скромному мнению, это было бы более чисто для использования здесь, документ например,

sed -f- /var/lib/dhcp/dhcpd.leases << 'EOF'
s/c0:a8:9:2/AOD-ADMIN-OFFICE/
s/c0:a8:9:3/GOLF-MAINTENANCE-BUILDING/
s/c0:a8:9:4/MARINA-DRY-STACK/
s/c0:a8:9:5/DC-SERVICE-ROOM/
s/c0:a8:9:6/ACPM-ADMIN-OFFICE/
s/c0:a8:9:7/SEA-WATER-OFFICE/
EOF

, который Вы могли вместо этого поместить эти s/c0:a8:9:2/AOD-ADMIN-OFFICE/ строки в отдельном командном файле и назвать его с sed -f cmdfile /var/lib/dhcp/dhcpd.leases, если это делает таблицу легче поддержать, т.е.

В cmdfile (или безотносительно имени, Вы принимаете решение назвать его):

# list of agent.remote-id to physical location mappings
# for use in DHCP lease file processing script

s/c0:a8:9:2/AOD-ADMIN-OFFICE/
s/c0:a8:9:3/GOLF-MAINTENANCE-BUILDING/
s/c0:a8:9:4/MARINA-DRY-STACK/
s/c0:a8:9:5/DC-SERVICE-ROOM/
s/c0:a8:9:6/ACPM-ADMIN-OFFICE/
s/c0:a8:9:7/SEA-WATER-OFFICE/

затем в Вашем сценарии

sed -f cmdfile /var/lib/dhcp/dhcpd.leases
1
ответ дан 28 September 2019 в 15:21

Другие вопросы по тегам:

Похожие вопросы: