Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: Предаване на данни между 2 машинки.


  • Subject: Re: lug-bg: Предаване на данни между 2 машинки.
  • From: Vasil Kolev <vasil@xxxxxxxxxx>
  • Date: Tue, 29 Jun 2004 22:58:31 +0300
  • Organization: Ludost Networks

На вт, 2004-06-29 в 15:41, Христофор Памятних записа:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Проблема е следния - драснах един скрипт който да събира разнообразни 
> статистики от трафика на ppp интерфейсите. Идеята е по статистиките които 
> събира въпросния скрипт да се чертаят графики на друга машинка. В момента се 
> чудя как да прехвърля съответните числа. Оказа се че по snmp за съжаление не 
> става - има ограничение за дължината на текстов низ. Сещам се за няколко идеи 
> но ни една от тях ми се струва елегантана - напр. демонче което да виси на 
> едикой си порт и да си признава всичко което му кажат, апаш и временни записи 
> в база. Просто ми се ще да исползвам нещо съвсем стандартно от типа на snmp. 
> Става дума за около 300 различни числени стойности.

Аз реши подобен проблем по следния начин - на машината, която генерира
данните, работи нещо такова в cron-а:
#!/bin/sh
# da se pogrizhim da ne se pusne vtori put sushtiq proces
if [ -f /var/run/cront.pid ]; then
        if [ -d /proc/`cat /var/run/cront.pid` ] ; then
                echo Cront already running!
                exit 0
        fi
fi
echo $$ > /var/run/cront.pid
trap "rm -f /var/run/cront.pid" exit SIGHUP SIGINT SIGTERM 
# tova subira dannite
gather_data > tmp/tmpfile
stamp=`date +%s`
hn=`hostname`
# mv e atomichna operaciq na edna i sushta FS, taka che nqma shans
# neshtoto ot drugata strana da se hvane i da vzeme polovin fajl
mv tmp/tmpfile data/stat.$hn.$stamp
rm -f /var/run/cront.pid

А на събиращата машина пак в cron-а има нещо като това (тоя скрипт също
има locking, но ме мързи да го повтарям, същия е като горния):
#!/bin/bash
set -e
cd /home/stats/final
for i in `cat /etc/machinelist`; do
	scp 'username@'$i':/home/stats/data/*' .
	t=data.$i.*
	# da pochistim starite fajlove
	ssh username@$i "cd /home/stats/data && rm $t"
done
for i in *; do 
	parse_data $i
done

Това в общи линии ти гарантира, че няма да имаш половинчати файлове, и
че и да изтървеш един update, не е фатално  Можеш съответно да си
разпределяш файловете от различни машини по директории (в моя случай не
ми трябваше, това, което събираше данните им слагаше label-и).

Може да има някаква грешка в locking механизма (т.е. да не пусне
случайно cron-а втори такъв процес, докато работи първия, и да намаже
ситуацията), но това вече лесно се оправя, има няколко много добри
механизма за целта. 

Attachment: signature.asc
Description: This is a digitally signed message part



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.