Формат выходного файла, в принципе, очень легко правиться под любого вендора.
В скрипте есть одно проблемное местно. В цикле для каждого номера дважды запускается asterisk -rx "sip show peer $line".
Я не придумал как проверить и вынуть данные за 1 итеррацию. Можно, например, вовсе отказать от проверки != "". Если знаешь как, пиши в комментариях.
#!/bin/sh
asterisk
-rx 'sip show peers' |egrep 'OK|UNKNOWN|UNREACHABLE' |grep -v
'[:alpha:]'|grep -v '^[169]'|grep -v '{5,9}' |awk '{print $1}'|awk -F'/'
'{print $1}' > /tmp/extensions.txt
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' > /tftpboot/000000000000-directory.xml
echo '<!-- $RCSfile$ $Revision: 35928 $ -->' >> /tftpboot/000000000000-directory.xml
echo '<directory>' >> /tftpboot/000000000000-directory.xml
echo ' <item_list>' >> /tftpboot/000000000000-directory.xml
cat /tmp/extensions.txt | while read line
do
RES=$(asterisk -rx "sip show peer $line" |grep Callerid |grep -v 'FIX' |grep -v 'Test');
if [ "$RES" != "" ]; then
asterisk -rx "sip show peer $line" |grep Callerid | awk -F': "'
'{print $2}' | awk -F'" <' '{print
"\t\t<item>\n\t\t\t<ln>"$1"</ln>\n\t\t\t<c t>"$2"</ct>\n\t\t</item>"}' >> /tftpboot/000000000000-directory.xml
fi
done
echo ' </item_list>' >> /tftpboot/000000000000-directory.xml
echo '</directory>' >> /tftpboot/000000000000-directory.xml
Комментариев нет:
Отправить комментарий