Еще одно решение (все в одном):
IFS='' #prevent ending/trailing whitespace from being trimmed.
while read line in
do
if [ ! "$(echo $line | grep -e'^\s')" ] # if the word is not begins from space
then
# just write it to result_file
echo $line >> result_file
else
# cut leading space => grep in file_2 (get 1 line after match too) => grep for uri => cut no needed symbols => write it to result_file
echo " - $(grep -A1 $(echo "$line" | tr -d ' ') file_2 | grep uri | cut -d ':' -f2 | tr -d '", ')" >> result_file
fi
done < file_1
Этот скрипт читает из file_1
и сравнивает строки с file_2
. Результат вставлен в result_file
.
Похоже, Comcast неправильно усекает идентификатор клиента, отправляемый в рекламных сообщениях. Я вручную вызвал dhcpcd
с опцией -d
:
Mar 14 16:22:35 router dhcpcd[127923]: enp8s0: broadcasting SOLICIT6 (xid 0xc32482), next in 0.9 seconds
Mar 14 16:22:35 router dhcpcd[127923]: enp8s0: incorrect client ID from 2001:558:4082:7f::1
Mar 14 16:22:35 router dhcpcd[127923]: enp8s0: incorrect client ID from 2001:558:4082:7f::1
С помощью wireshark я просмотрел идентификаторы клиентов:
11 5.308301 fe80::aaaa:aaaa:aaaa:aaaa ff02::1:2 DHCPv6 208 Solicit XID: 0xc32482 CID: 000403000200040005000006000700080009
12 5.360355 2001:558:4082:7f::1 fe80::aaaa:aaaa:aaaa:aaaa DHCPv6 196 Advertise XID: 0xc32482 CID: 00040300020004000500 IAA: 2001:558:600a:7f:bbbb:bbbb:bbbb:bbbb
Идентификатор клиента типа 4 представляет собой DUID на основе UUID -, длина которого должна составлять 128 битов (16 байтов ). dhcpcd
отправляет правильную длину, но ответ comcast слишком короткий (на 8 байтов ).
Я попытался отправить явный идентификатор клиента -через dhcpcd -I 00:04:03:00:02:00:04:00:05:00...
, чтобы он соответствовал тому, до которого его усекает Comcast, но tcpdump предполагает, что эта опция не работает. Я также попытался изменить его с типа 4 (, который указан в RFC -), на тип 9 (, который не является ), на тот случай, если dhcpcd
не нравится тип -4 идентификатор клиента был слишком коротким, но dhcpcd
по-прежнему не использовал его.