Strona 1 z 2

[Bash] Pytanie o skrypcik

: 26 października 2007, 09:06
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 :)

: 27 października 2007, 17:13
autor: db
Uruchom z -x, pewno ścieżki absolutne są potrzebne [ /bin/... ]. Ale bash -x powinno pokazać Ci co jest nie tak.

: 27 października 2007, 17:59
autor: Gość
Zamiast ps użyj pidof


Pozdrawiam

: 27 października 2007, 19:19
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 :) )

: 27 października 2007, 19:24
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

: 27 października 2007, 19:25
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

: 27 października 2007, 19:29
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 :)

: 27 października 2007, 19:40
autor: zbyshek
dzięki Hagal za czujność
Pozdrawiam

: 27 października 2007, 19:54
autor: jajo111
Hagal pisze:if [ -z
Hagal prosze powiedz mi jeszcze co znaczy ten -z ?? w tym kodzie bo reszta wmiare juz przejzysta :)

: 27 października 2007, 19:57
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