Дата: 2010-04-16 11:02:47
Комментариев: 1
Давно уже лежал без дела и пылился коммуникатор qtek s200, решил вдохнуть в него новую жизнь, так сказать. Будем делать из него что-то вроде второго дополнительного экрана. Первоначально сделал из него цифровую фоторамку:
$cat index.php
<html>
<head>
<title>Фоторамка</title>
<script language="JavaScript">

</script>
</head>
<body onload="timer=setTimeout('move()',60000)">
<IMG WIDTH=310 HEIGHT=225 SRC="foto.php">
</body>
</html>



 
	$folder = '/путь/до/папки/img';
        $extList = array();
	$extList['gif'] = 'image/gif';
	$extList['jpg'] = 'image/jpeg';
	$extList['jpeg'] = 'image/jpeg';
	$extList['JPG'] = 'image/jpeg';
	$extList['png'] = 'image/png';
 
$img = null;
 
if (substr($folder,-1) != '/') {
	$folder = $folder.'/';
}
 
if (isset($_GET['img'])) {
	$imageInfo = pathinfo($_GET['img']);
	if (
	    isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
        file_exists( $folder.$imageInfo['basename'] )
    ) {
		$img = $folder.$imageInfo['basename'];
	}
} else {
	$fileList = array();
	$handle = opendir($folder);
	while ( false !== ( $file = readdir($handle) ) ) {
		$file_info = pathinfo($file);
		if (
		    isset( $extList[ strtolower( $file_info['extension'] ) ] )
		) {
			$fileList[] = $file;
		}
	}
	closedir($handle);
 
	if (count($fileList) > 0) {
		$imageNumber = time() % count($fileList);
		$img = $folder.$fileList[$imageNumber];
	}
}
 
if ($img!=null) {
	$imageInfo = pathinfo($img);
	$contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
	header ($contentType);
	readfile($img);
} else {
	if ( function_exists('imagecreate') ) {
		header ("Content-type: image/png");
		$im = @imagecreate (100, 100)
		    or die ("Cannot initialize new GD image stream");
		$background_color = imagecolorallocate ($im, 255, 255, 255);
		$text_color = imagecolorallocate ($im, 0,0,0);
		imagestring ($im, 2, 5, 5,  "IMAGE ERROR", $text_color);
		imagepng ($im);
		imagedestroy($im);
	}
}
 
?>
 


Фото из папки img беруться с сайта www.photosight.ru. Как это сделать написано в предыдущей статье.
Затем сделал информационную панель, в которой отображается uptime, cpu usage, RAM usage,system load,etc:

#!/bin/bash
Q_HOST="127.0.0.1"
LOAD_WARN=5.0
MYNETINFO="My Network Info"
GREEN='<font color="#00ff00">'
RED='<font color="#ff0000">'
NOC='</font>'
LSTART='
<ul>
<li>'
LEND='</li>
</ul>
 
'
PING="/bin/ping"
NOW="$(date)"
 
writeHead(){
 echo '<HTML><HEAD><TITLE>Network Status</TITLE></HEAD><META HTTP-EQUIV="refresh" CONTENT="10"><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <BODY alink="#0066ff" bgcolor="#000000" link="#0000ff" text="#ccddee" vlink="#0033ff">'
 echo '<CENTER>'
 echo "Generated on $NOW"
 echo '</CENTER>'
 
}
 
writeFoot(){
  echo "</BODY></HTML>"
}
 
writeHead
echo '<TABLE WIDTH=100% BORDER=1 BORDERCOLOR="#000080" CELLPADDING=2 CELLSPACING=2 FRAME=HSIDES RULES=NONE" >'
echo '<TR VALIGN=TOP>'
for host in $Q_HOST
do
  echo '<TD BGCOLOR="#000000">'
  rhostname="$(hostname)"
 
  ruptime="$(uptime)"
  if $(echo $ruptime | grep -E "min|days" >/dev/null); then
    x=$(echo $ruptime | awk '{ print $3 $4}')
  else
    x=$(echo $ruptime | sed s/,//g| awk '{ print $3 }')
  fi
  ruptime="$x"
 
  rload="$(uptime |awk -F'average:' '{ print $2}')"
  x="$(echo $rload | sed s/,//g | awk '{ print $2}')"
  y="$(echo "$x >= $LOAD_WARN" | bc)"
  [ "$y" == "1" ] && rload="$RED $rload (High) $NOC" || rload="$GREEN $rload (Ok) $NOC"
 
  rclock="$(date | awk '{print $4}')"
  rtotalprocess="$(ps axue | grep -vE "^USER|grep|ps" | wc -l)"
  rusedram="$(free | grep buffers/cache |head -n1| awk '{ print $3 " MB" }')"
  rfreeram="$(free | grep buffers/cache |head -n1| awk '{ print $4 " MB" }')"
  rtotalram="$(free -mto | grep Mem: | awk '{ print $2 " MB" }')"
 
  $PING -c1  $host>/dev/null
  if [ "$?" != "0" ] ; then
    rping="$RED Failed $NOC"
  else
    rping="$GREEN Ok $NOC"
    echo "<b><u>$rhostname</u></b><BR>"
    echo "Time: $rclock<BR>"
    echo "Uptime: $ruptime <BR>"
    echo "Load average: $LSTART $rload $LEND"
    echo "Total running process: $LSTART $rtotalprocess $LEND"
    echo "Disk status:"
    #echo "$rfs"
    echo "Ram/swap status:
<ul>"
    echo "
<li>Used RAM: $rusedram</li>
 
"
    echo "
<li>Free RAM: $rfreeram</li>
 
"
    echo "
<li>Total RAM: $rtotalram </li>"
  fi   
 
  echo "</td>
 
"
done
  echo "</tr>
</table>
 
"
writeFoot


$cat start-info.sh
#!/bin/bash
while true; do sleep 3; /путь/до/файла/info.sh > /var/www/infostat.html; done

Теперь каждые 3 сек. будет генерироваться иформация в infostat.html. Добавляем последний скрипт в автозагрузку. Система→Параметры→Запускаемые приложения→Добавить
Осталось теперь подключить кпк к wifi (в моём случае) и в браузере набрать:
http://192.168.2.2/infostat.html


Информация будет автоматически обновляться.

Файлы:
ppc.tar.gz

теги: ppc, qtek, s200
 Дата: 2010-04-15 22:07:52
Комментариев: 0
Стягиваем новые фото на рабочий стол или можно их использовать для отображения на цифровой фоторамки из кпк. Сам скрипт получения:
$cat photosight.sh
#!/bin/bash
cd /путь/до/папки/img
FN=`wget -q http://www.photosight.ru/applications/photo1.js -O - 
  | iconv -f cp1251 -t utf-8 
  | sed 's/.*(http.*jpg).*/1/' 
  | sed 's/top_of_day/large/'  
  | xargs echo`
ID=`echo $FN | sed 's/.*/([0-9]+)_large.jpg/1/'`
wget -q -N  $FN -O $ID.jpg
exit

Добавляем в cron новую задачу:
$crontab -u username -e
0 * * * * /путь/до/файла/photosight.sh >/dev/null 2>&1

Теперь каждый час будет скачиваться новая фотография. Теперь можно использовать эти фотографии в качестве фона на рабочем столе:
$cat wallpapers.sh
#!/bin/bash
         COUNTER=0
         while [  $COUNTER ]; do
             sleep 3600; PIC=`ls /путь/до/папки/img/*.jpg 
             | /bin/sed -n "$[RANDOM%$(ls /путь/до/папки/img/*.jpg 
             | /usr/bin/wc -l)]p"`;
`DISPLAY=":0" /usr/bin/gconftool-2 --set --type string /desktop/gnome/background/picture_filename $PIC`
             let COUNTER=COUNTER+1
         done

Теперь каждый час из папки img случайным образом будет выбираться фон для рабочего стола. Осталось добавить его в автозагрузку. Система→Параметры→Запускаемые приложения→Добавить

Файлы:
photosight.tar.gz

 Дата: 2010-04-10 17:02:07
Комментариев: 0

Захотелось как-то в консоли по-быстрому узнать сколько же денег на счете, ну и решил немного попарсить яндекс. Создадим файл ym.sh и добавим в него:
cat ym.sh
#!/bin/bash
 
/usr/bin/wget -q --no-check-certificate --keep-session-cookies  
--save-cookies=/путь/до/файла/cookies 
--load-cookies=/путь/до/файла/cookies "https://passport.yandex.ru/passport?mode=auth" 
--referer="https://money.yandex.ru/" --post-data="login=логин&passwd=пароль" -O /dev/null; 
/usr/bin/wget -q --no-check-certificate --keep-session-cookies 
--save-cookies=/путь/до/файла/cookies 
--load-cookies=/путь/до/файла/cookies "http://money.yandex.ru/" -O - | 
iconv -f CP1251 -t UTF8 | grep "" | tail -n 1 |  sed -e :a -e 's/<[^>]*>//g;/

Делаем его исполняемым:
Код:
chmod +x ym.sh

Запускаем:
Код:
^_^[daffin@daffin:~]$ ./ym.sh
373 руб. 16 коп.

Для красоты можно прикрутить этот скрипт в conky. Для этого в домашнем каталоге в файле .conkyrc добавим:
$ nano .conkyrc
${color #FFFFFF}Yandex.Money: ${color red}${execi 3600 /путь/до/файла/ym.sh}

Файлы:
ym.sh.tar.gz
ym.sh
теги: yandex, money, conky
 Дата: 2010-04-06 11:45:06
Комментариев: 0
В свое время, году так 2005, купил такой термометр. В винде с помощью Temp. Keeper отображался график температуры, но так как программа платная, то были ограничения по функционалу, которые малость напрягали, а морочиться с оплатой тогда не было желания и датчик был заброшен на полку, где и пылился до недавнего времени.
В какой-то статье узнал, что датчик в моем термометре поддерживается в программе digitemp и вот что из этого вышло.
Первым делом устанавливаем:

sudo apt-get install digitemp

...

Читать далее

теги: digitemp, rrdtool, DS1820
 Дата: 2010-04-03 19:47:02
Комментариев: 0


Нужны рефералы? А все друзья и товарищи зарегестрированы в дропбоксе? Не беда! Нам поможет VirtualBox.
1. Создаем новую виртуальную машину, устанавливаем Xp.
2. Множим наш виртуальный жесткий диск на нужное кол-во рефералов.
3. Регистрируемся по реф. ссылки, устанавливаем их клиент.
4. Выключаем виртуалку.
5. Заходим в Свойства -> Сеть -> Дополнительно -> генерируем новый MAC-адрес и в Носителях выбираем следующий новый диск.

6. Повторяем с третьего пункта Email вбивать можно от балды, проверка идет по MAC-адресу.
теги: dropbox, virtualbox
 Дата: 2010-03-26 14:32:37
Комментариев: 2
Хорошо получать различные уведомления от сервера, особенно удобно узнавать пропала ли сеть или ещё чего случилось. Можно было бы воспользоваться он-лайн сервисами отправки смс, но если нет сети - нет и смс, так что будем прикручивать обычный мобильник. Была найден старая нокия 6610i и кабель CA-42 к нему. Подключаем всё это хозяйство. Появляется /dev/ttyUSB0. Теперь устанавливаем gnokii:
Код:
sudo apt-get install gnokii

В домашнем каталоге создаем или редактируем файл .gnokiirc :
nano ~/.gnokiirc
[global]
port = /dev/ttyUSB0
connection = dlr3p
model = 6510

Проверяем:
$ gnokii --identify
GNOKII Version 0.6.27
IMEI : 342423445645432
Manufacturer : Nokia
Model : 6610i
Product name : RM-37
Revision : V 3.10

Теперь можно отсылать смс:
Код:
echo 'тест' | gnokii --sendsms +7921xxxxxxx -8

Можно ещё прикрутить простенькую web-морду для отсылки смс.


Просто распакуйте архив sms.tar.gz в папку www
Всё!
Файлы:
sms.tar.gz
теги: gnokii, sms, nokia, 6610i
 Дата: 2010-03-18 21:19:20
Комментариев: 1
Возникла необходимость с некоторой периодичностью чистить ящик от писем, а делать все вручную или в почтовом клиенте не тру. И был набросан сей скриптик:
#cat clean-pop:
  1.  
  2. #!/bin/bash
  3. username="username@mail.ru";
  4. password="password";
  5. MAX_MESS=$1
  6. [ $# -eq 0 ] && exit 1 || :
  7. sleep 2
  8. echo USER $username
  9. sleep 1
  10. echo PASS $password
  11. sleep 2
  12. for (( j = 1 ; j <= $MAX_MESS; j++ ))
  13. do
  14. echo DELE $j
  15. sleep 1
  16. done
  17. echo QUIT
  18.  

Теперь чтобы удалить письма вызываем вот так скрипт:
Код:
./clean-pop 10 | /usr/bin/telnet pop3.mail.ru 110
Где 10 - кол-во писем которые нужно удалить.
Для удобства, чтобы постоянно это не вводить, можно добавить такую строку в файл .bashrc
Код:
alias dm='/путь/до/файла/clean-pop 10 | /usr/bin/telnet pop3.mail.ru 110'
И удалять простой командой dm

Файлы:
dm.zip

теги: pop3, mail
   1  ...  10  11  12  13  14