[Bash] Pytanie o skrypcik

Potrzebujesz pomocy z C, C++, perl, python, itp.
jajo111
Posty: 27
Rejestracja: 20 czerwca 2006, 11:18

[Bash] Pytanie o skrypcik

Post autor: jajo111 »

Mam takie cos wsadzone do crona:
#!/bin/bash

CUR_IP=`wget http://www.killfile.pl/ktojajestem.php -O /tmp/.cur_ip;cat /tmp/.cur_ip \
| grep IP | sed s"/.*to://" | sed s"/(.*//";rm /tmp/.cur_ip`

LAST_IP="/tmp/.ip"

test -e $LAST_IP || echo $CUR_IP > $LAST_IP

if [ `cat $LAST_IP` == `echo $CUR_IP` ]; then
exit 0
else
echo "$CUR_IP" > "$LAST_IP"
/home/pvpgn/pvpgn.sh
exit 0
fi
<-- Autorem tego skryptu jest Hagal, i bardzo dziekuje za niego jest genialny

następnie mam taki skrypt: pvpgn.sh który jest jak by połaczony z tym wczesniejszym u górze.

Kod: Zaznacz cały

#!/bin/bash 

echo Zabijanie procesow pvpgn
ls -L /home/pvpgn/sbin/bnetd
ls -l /home/pvpgn/sbin/bnetd
killall -9 bnetd
ls -L /home/pvpgn/sbin/bnetd
killall -9 d2cs
ls -L /home/pvpgn/sbin/d2cs
killall -9 d2dbs
ls -L /home/pvpgn/sbin/d2dbs
echo Startowanie


su pvpgn -c /home/pvpgn/sbin/bnetd
echo startowanie Bnetd
ls -L /home/pvpgn/pvpgn.sh
su pvpgn -c /home/pvpgn/sbin/d2cs
echo Startowanie d2cs
ls -L /home/pvpgn/pvpgn.sh
echo Startowanie d2dbs
su pvpgn -c /home/pvpgn/sbin/d2dbs
ls -L /home/pvpgn/pvpgn.sh
I problem polega na tym ze nie zabija mi procesów a pozniej mi ich nie startuje :(
Jak włącze recznie komede z root-a to idzie ale z crona juz niechce :( mowie o tym pvpgn.sh
Potrzebny mi ten 1 skrypt do tego zeby mi restartowal server w diablo ktory czyta IP zewnetrzne potrzebne do wpuszczenia na server :(

Jest jakaś rada na to ?
Prosze o pomoc i z góry dziekuje

[ Dodano: 2007-10-26, 12:55 ]
albo nie wiem moze jest taki skrypt co by sprawdzal czy te 3 procesy sa wlaczone czyli bnetd, d2cs , d2dbs jesli tak to killuje all i wlacza komede wlaczajaca ??
Ma ktos jakis pomysl jak wynik ps ax mozna zapisac w pliku ??
Prubowałem wpisac cos takiego:

Kod: Zaznacz cały

(ps ax | sed '/bnetd/')
(ps ax | sed '/d2cs/')
(ps ax | sed '/d2dbs/')
i teraz nie jak tego mozna dokladnie uzyc :)
db
Beginner
Posty: 185
Rejestracja: 25 czerwca 2006, 15:23

Post autor: db »

Uruchom z -x, pewno ścieżki absolutne są potrzebne [ /bin/... ]. Ale bash -x powinno pokazać Ci co jest nie tak.
Gość

Post autor: Gość »

Zamiast ps użyj pidof


Pozdrawiam
jajo111
Posty: 27
Rejestracja: 20 czerwca 2006, 11:18

Post autor: jajo111 »

jak wynik pidof -a zapisac do jakiegos pliku ?
pidof bnetd d2cs d2dbs | sed !w <sciezka do pliku> ?

Myslalem ze cos zmodze na wzor pierwszego skryptu ze sprawdzi pliczek starych id bneta d2cs i d2dbsa jesli sie rozni to skiluje i pozniej otworzy.

a ten bash -x gdzie mam wlozyc do jakiego skryptu do pvpgn.sh ?

czy dac tam gdzie mi uruchamia czyli skryptu hagala ?
i tam dac bash -x /home/pvpgn/pvpgn.sh ?

i dziekuje za pomoc :) , i przepraszam ale staram sie sam cos nauczyc :) (i tak sukces ze juz windy sie pozbylem na ament, Debianek i Ubuntu to madre stworzonka :) )
zbyshek
Posty: 19
Rejestracja: 05 września 2007, 09:37
Lokalizacja: Polska

Post autor: zbyshek »

jajo111 napisał:
Ma ktos jakis pomysl jak wynik ps ax mozna zapisac w pliku ??
wynik polecenia ps ax można zapisać w nastęujący sposób:

Kod: Zaznacz cały

 ps ax > plik 
albo nie wiem moze jest taki skrypt co by sprawdzal czy te 3 procesy sa wlaczone czyli bnetd, d2cs , d2dbs jesli tak to killuje all i wlacza komede wlaczajaca ??
Poniżej przedstawiam taki skrypt:

Kod: Zaznacz cały

#!/bin/bash
proces1="bnetd"
proces2="d2cs"
proces3="d2dbs"

	if [ "$(pidof $proces1)" != "" ] ; then
		kill -9 $(pidof $proces1])
		echo "proces zabity: $proces1"
		#poniżej wpisz  komendę włączającą bnetd
	else
		echo "brak procesu: $proces1"
	fi

	if [ "$(pidof $proces2)" != "" ] ; then
		kill -9 $(pidof $proces2])
		echo "proces zabity: $proces2"
		#poniżej wpisz  komendę włączającą d2cs
	else
		echo "brak procesu: $proces2"
	fi

	if [ "$(pidof $proces3)" != "" ] ; then
		kill -9 $(pidof $proces3])
		echo "proces zabity: $proces3"
		#poniżej wpisz  komendę włączającą d2dbs
	else
		echo "brak procesu: $proces3"
	fi
Pozdro
Gość

Post autor: Gość »

A po co wynik do pliku ?

Mały przykład :

Kod: Zaznacz cały

for x in bnetd d2cs d2dbs; do
   if [ -z "$(pidof $x)" ]; then
      /sciezka/do/$x start
   else
      /sciezka/do/$x restart
   fi
done
Dla każdej z trzech usług sprawdza czy jest ona uruchomiona - jeśli tak, to robi jej restart - jeśli nie, to ją uruchamia

£apiesz ogólnie zasadę ?

To teraz pokombinuj dalej :)

P.S.
zbyshek : przekombinowałeś :) )


Pozdrawiam
jajo111
Posty: 27
Rejestracja: 20 czerwca 2006, 11:18

Post autor: jajo111 »

dzieki chlopaki za szybkie odpowiedzi :) teraz wezme jakis tutek do basha i postudiuje :) wasze czary :)

jak dobrze wnioskuje to jesli procesy sa uruchomione to wywoluje komede restartujaca, a jesli ich nie ma to startujaca :) szybko i sprawnie :)

Dziekuje wam ślicznie :)
zbyshek
Posty: 19
Rejestracja: 05 września 2007, 09:37
Lokalizacja: Polska

Post autor: zbyshek »

dzięki Hagal za czujność
Pozdrawiam
jajo111
Posty: 27
Rejestracja: 20 czerwca 2006, 11:18

Post autor: jajo111 »

Hagal pisze:if [ -z
Hagal prosze powiedz mi jeszcze co znaczy ten -z ?? w tym kodzie bo reszta wmiare juz przejzysta :)
Gość

Post autor: Gość »

jajo111 pisze:Hagal prosze powiedz mi jeszcze co znaczy ten -z ?? w tym kodzie bo reszta wmiare juz przejzysta :)
Proszę bardzo :)

Kod: Zaznacz cały

if [ -z "$(pidof $x)" ]]
£opatologicznie to będzie mniej więcej tak :
[b]jeśli wynik zapytania o pid procesu będzie pusty , to ....[/b]

gdzie :
[i](pidof $x)[/i] - zapytanie o pid procesu
[i]-z[/i]   - pusty (brak wyniku)


Pozdrawiam
ODPOWIEDZ