Изменить таблицу аренды DHCP с помощью script & sed
Уважаемые,
У меня есть в аренде файла аренды 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-id на строку перед отправкой этого файла в другое место, а также, если это возможно, преобразовать поле идентификатора цепи в двоичный код из шестнадцатеричного. Думая о первом, что я сделал, я попытался сделать скрипт следующим образом, но он не работает:
#!/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}
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