Linksys slideshow
Содержание
(бес)Полезные картинки на IPфонах Linksys SPA942/962 , рандомный слайдшоу
Основано на офиц. документации LVS SPA962 & SPA942 Phone Photo Album Display
Проверено на прошивке 6.1.5(а)
Потребуется cron, wget, perl, пакет ImageMagick, web сервер
Потребуется минимум три директории
- скрипты и картинки для 942
- скрипты и картинки для 962
- скрипты для телефонов (cgi-bin директория web сервера)
Получение картинок на сервер
get.sh
#!/bin/sh
cd /путь/images_942
или
cd /путь/images_962
получение картинок любым путем, например информеры курса валют, погоды, пример
wget http://pics.rbc.ru/img/grinf/dm_cb88x31.gif -O new.gif && ./convert.sh new.gif 1.bmp wget http://pics.rbc.ru/img/grinf/usd_cb_8831.gif -O new.gif && ./convert.sh new.gif 2.bmp
картинки нумеруются, по порядку, скрипт выдачи картинок дергает их рандомно
по необходимости засунуть в cron
Конвертирование
convert.sh
#!/bin/sh X=`identify $1|awk '{print($3)}'|sed 's/x/ /'|awk '{print($1)}'` Y=`identify $1|awk '{print($3)}'|sed 's/x/ /'|awk '{print($2)}'`
для 942
if [[ $X -gt 120 ]] || [[ $Y -gt 40 ]]
или
if [[ $X -gt 121 ]]
для 962
if [[ $X -gt 320 ]]
then
для 942
convert -adaptive-resize 128x48 $1 temp.bmp && rm -fv $1 convert -extent 128x48 temp.bmp temp2.bmp && rm -fv temp.bmp convert -monochrome temp2.bmp $2 && rm -fv temp2.bmp else convert -extent 128x48 $1 temp2.bmp && rm -fv $1 convert -monochrome temp2.bmp $2 && rm -fv temp2.bmp
для 962
convert -adaptive-resize 320x240 $1 temp.bmp && rm -fv $1 convert -background black -gravity Center -extent 320x240 temp.bmp $2 && rm -fv temp.bmp else convert -background black -gravity Center -extent 320x240 $1 $2 && rm -fv $1
fi
передаваемые параметры
- $1 - оригинальная картинка
- $2 - готовая
Выдача картинок
spa9x2_image.cgi
#!/usr/bin/perl -w use POSIX("ceil"); use strict;
my $image = "/путь/к/картинкам/для/конкретной/модели/images/" . ceil ( rand 4 ) . ".bmp";
число картинок вписано вручную для уменьшения времени выполнения
можно заменить на что-то типа
ls -l /путь/*bmp|wc -l
my @timers = ('13','15','17','19'); my $timerandom = $timers[rand @timers];
время до следующего обновления
print "Refresh: $timerandom; url=http://192.168.98.99/путь/cgi-bin/spa9x2_image.cgi\r\n"; open IMG,"<$image"; binmode IMG; print "Content-type: Image/bmp\n\n"; binmode STDOUT; while (<IMG>) { print $_; } close IMG; exit (0);
Установка картинок на телефоны
9x2_image_reset.sh
#!/bin/sh LIST="/путь/к/списку/телефонов/данной/модели/spa9x2_list"
сброс картинки на пустую
for i in `cat $LIST` do wget --post-data="32046=&25198=BMP+Picture" http://$i/admin/asipura.spa -q -O /dev/null done
sleep 5
установка
for i in `cat $LIST` do wget --post-data="32046=http%3A%2F%2F192.168.98.99%2Fпуть%2Fcgi-bin%2Fspa9x2_images.cgi&25198=BMP+Picture" \ http://$i/admin/asipura.spa -q -O /dev/null done
Практика показала, что разовая недоступность сервера останавливает обновление картинок :)
Поэтому рекомендуется сунуть этот скрипт в cron куда-нибудь на утро, например так
5 6 * * * /путь/942_image_reset.sh 2>&1 > /dev/null 25 6 * * * /путь/962_image_reset.sh 2>&1 > /dev/null
Получение списка телефонов
phone_find.sh
Получить список всех SPA942/942, при условии, что есть список всех телефонов, можно например так
for i in `cat list` do TXT=`wget http://$i/ -O -` S942=`echo $TXT|grep SPA-942|wc -l` S962=`echo $TXT|grep SPA-962|wc -l` if [ $S942 -eq 1 ] then echo "$i" >> spa942_list fi if [ $S962 -eq 1 ] then echo "$i" >> spa962_list fi sleep 0 done
Если list - файл со списком ip адресов всех телефонов, то в файлах spa942_list/spa962_list будут ip адреса телефонов этой модели
by MejGun