EKG2, dump sprawdzanie nowych wiadomo

Potrzebujesz pomocy z C, C++, perl, python, itp.
rryk
Posty: 50
Rejestracja: 13 stycznia 2009, 08:49

EKG2, dump sprawdzanie nowych wiadomośći przez skrypt

Post autor: rryk »

Mam coś takiego:

Kod: Zaznacz cały

linia=1 # aktualna sprawdzana linia
clear
while [ 1 ]; do
	source .kill
	if [ $killekg2 = "1" ]; then
	sleep 1
	sed -i 's/killekg2="1"/killekg2="0"/g' ".kill"
	exit;fi
# KONIEC SPRAWDZANIA SYGNA£U KILL
	if [ ! -f "ekg2-dump.txt" ]; then
		echo "timer (null) */1 dump" >> ~/.ekg2/config
	fi
	cat ekg2-dump.txt | awk -F"Rozmowa z " '/Rozmowa z/{print $2}' | awk -F" rozpoczęta" '{print $1}' > ekg2
	ggodkogo=$(cat 'ekg2'| tr '\n' ' ')
	if [ -f "ekg2" ]; then ilemalini=$(cat "ekg2" | wc -l); fi # sprawdź ile ma teraz plik linii
	while [ -z "$LINE" ]; do # cos tu trzeba zmienic (warunek)		
		LINE=$(sed -n ${linia}p "ekg2")
		if [ ! -z "$LINE" ]; then # zmienić warunek ifa
			let nrlinii=$linia
				if [ $nrlinii = $ggmsgustalone ]; then echo "Plik ekg2 osiągną ustaloną ilość linijek $ggmsgustalone" #sprawdzamy czy jest inne oraz równe
			elif [ $nrlinii -gt $ggmsgustalone ]; then echo "Masz już $nrlinii wiadomości od: $ggodkogo" #sprawdzamy czy jest inne oraz większe
			fi #kończymy sprawdzanie
		fi
		if [ $ilemalini -lt $linia ]; then
			sleep 1;
		fi
	done
	LINE="" 
	let linia+=1 

done
Cały ten kod jest odpowiedzialny za sprawdzanie na bieżąco czy ktoś napisał wiadomość na ekg2. Ale opiszę to krok po kroku, na początku sprawdzany jest plik kill, w którym jeśli zmienna killekg2 osiągnie 1 skrypt ma być zabity, a killekg2 ma powrócić z powrotem do 0. Dalej skrypt sprawdza czy istnieje plik ekg2-dump.txt jeśli nie to dodaje na końcu pliku ~/.ekg2/config odpowiednią linijkę żeby ten plik utworzyć i idzie dalej, następnie sprawdza czy ktoś rozpoczął ze mną rozmowę. Jeśli tak zapisuje jego nazwę do pliku ekg2. Dalej pomagał mi KamilSilver, który napisał część sprawdzającą ile linijek ma plik ekg2 jeśli tyle samo co ggmsgustalone wtedy wyświetla daną wiadomość jeśli zaś więcej inną. Skrypt pozornie działa ale nie tak jak należy. Tzn. wykonuje jedno sprawdzenie i się zacina - jeżeli będziemy go wyłączać i włączać działa jak należy ale tu chodzi o sprawdzanie na bieżąco i jeśli się coś zmieni w pliku ekg2 (przybędzie linijka) wykonywać daną akcję.

Ps. Mam nadzieję, że rozumiecie o co mi chodzi.
ODPOWIEDZ