Strona 1 z 2

[+] Bash - błąd w skrypcie

: 10 stycznia 2011, 21:32
autor: GigantV12
Witam.
Mam taki problem, napisałem skrypt włączający serwer gry i sprawdzający czy działa, jak nie to go włącza, ale mam błąd i nie wiem gdzie. Od razu napiszę, że katalogi istnieją. Informuje mnie tylko:

Kod: Zaznacz cały

Nie ma takiego pliku ani katalogu
Oto skrypt:

Kod: Zaznacz cały

#!/bin/bash 
#
# linux shell script to start/stop/restart dedicated server
# use it to control and check server status
#
#===================================================================
#===================================================================
# Set the following variables to your system needs
#===================================================================

 NAME=PG\ TRENING
 DEDIPATH=/home/admin/TMSHost/TMSHost2/
 DEDIFILE=TMSHost2
 DEDISTARTFILE=RunTrackmaniaForever.sh
 PIDDEDIFILE=TMSHost2.pid

 XASECOPATH=/home/admin/TMSHost/TMSHost2/xaseco
 XASECOFILE=RunXAseco.sh
 PIDXASECOFILE=xaseco2.pid


#======================================================================
#============== don't change anything below here ======================
#======================================================================

case "$1" in
  server-start)
               echo -n "Starting server - "$NAME
               cd /
               cd $DEDIPATH
               ./$DEDISTARTFILE
               pidof $DEDIFILE>>$PIDDEDIFILE
               echo
               echo -n "Wait"
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo "."
  server-stop)
               echo -n "Stopping server - "$NAME
               cd /
               cd $DEDIPATH
               killall $DEDIFILE
               rm $PIDDEDIFILE
               echo
               echo -n "Wait"
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo "."
         ;;
  server-restart)
               echo -n "Restaring server - "$NAME
               $0 server-stop
               echo
               echo -n "Wait"
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo "."
               $0 server-start
         ;;
  server-status)
              if [ -f $PIDDEDIFILE ] ; then
                 if kill -0 `cat $PIDDEDIFILE` 2>/dev/null ; then
                    echo "Server-is running - "$NAME
                 else
                     echo "Server is NOT running - "$NAME
                     $0 server-start
                 fi
              else
                  echo "Server is NOT running - "$NAME
                  $0 server-start
              fi
         ;;
  xaseco-start)
               echo -n "Starting XAseco - "$NAME
               cd /
               cd $XASECOPATH
               ./$XASECOFILE </dev/null >$PIDXASECOFILE 2>&1 &
               echo $!
               echo
               echo -n "Wait."
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo "."
         ;;
  xaseco-stop)
               echo -n "Stopping XAseco - "$NAME
               cd /
               cd $XASECOPATH
               kill -9 `cat $PIDXASECOFILE`
               rm $PIDXASECOFILE
               echo
               echo -n "Wait"
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo "."
         ;;
  xaseco-restart)
               echo -n "Restaring XAseco - "$NAME
               $0 xaseco-stop
               echo
               echo -n "Wait"
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo -n "."
               sleep 1
               echo "."
               $0 xaseco-start
         ;;
  xaseco-status)
              if [ -f $PIDXASECOFILE ] ; then
                 if kill -0 `cat $PIDXASECOFILE` 2>/dev/null ; then
                    echo "XAseco is running - "$NAME
                 else
                     echo "XAseco is NOT running - "$NAME
                     $0 xaseco-start
                 fi
              else
                  echo "XAseco is NOT running - "$NAME
                  $0 xaseco-start
              fi
         ;;
  *)
    echo "Usage: "$1" {server-start|server-stop|server-restart|server-status|xaseco-start|xaseco-stop|xaseco-restart|xaseco-status}"
    exit 1
esac
exit 0
Może ktoś mi pokazać gdzie jest błąd?

Z góry dziękuję

GigantV12

: 10 stycznia 2011, 22:40
autor: DaVidoSS
Błąd jest w tym że Ty tego skryptu nie napisałeś. a nawet więcej nie potrafisz zastosować go dla własnych potrzeb.
#===================================================================
# Set the following variables to your system needs
#===================================================================
Oznacza ze masz ustawić zmienne dla twojego systemu, ciebie interesuje linia:

Kod: Zaznacz cały

DEDIPATH=/home/admin/TMSHost/TMSHost2/
zmień ja na prawidłowa ścieżkę do folderu w którym znajduje się plik: gRunTrackmaniaForever.sh. Fraza "admin" dla twojego Debiana z pewnością nie ma zastosowania.

: 10 stycznia 2011, 22:53
autor: GigantV12
&quot pisze:Błąd jest w tym, że Ty tego skryptu nie napisałeś
Napisałem swój, tylko skopiowałem nagłówki z innego skryptu, bo nie chciało mi się ich pisać.
A co nie mogę pisać po angielsku ?

Napisałem w pierwszym poście:
Od razu napiszę, że katalogi istnieją.

: 11 stycznia 2011, 14:14
autor: mariaczi
Wstaw sobie do skryptu w drugą linię

Kod: Zaznacz cały

set -x
i znajdziesz gdzie skrypt ma błąd.

: 11 stycznia 2011, 14:23
autor: GigantV12
To samo co na początku, chyba tu jest błąd:

Kod: Zaznacz cały

#!/bin/bash 
Ale zawsze tak dawałem i działało

: 11 stycznia 2011, 14:27
autor: mariaczi
Po czym to wnosisz?
Znalazłeś w wyniku, po jakim poleceniu pojawił się Twój błąd

Kod: Zaznacz cały

Nie ma takiego pliku ani katalogu
?

: 11 stycznia 2011, 14:36
autor: GigantV12
mariaczi pisze:Znalazłeś w wyniku, po jakim poleceniu pojawił się Twój błąd

Kod: Zaznacz cały

Nie ma takiego pliku ani katalogu
?
Nie, tylko było napisane:

Kod: Zaznacz cały

Nie ma takiego pliku ani katalogu
mariaczi pisze:Po czym to wnosisz?
Po tym, że jak napisałem tylko:

Kod: Zaznacz cały

#!/bin/bash
(bez spacji na końcu) to napisało

Kod: Zaznacz cały

-bash: ./SERVER: /bin/bash^M: bad interpreter: Nie ma takiego pliku ani katalogu

: 11 stycznia 2011, 14:48
autor: mariaczi
Eh... i już wiesz co masz nie tak? Chyba sam już sobie odpowiedziałeś.
Piszesz skrypt w windows... to skonwertuj go przed wysłaniem na serwer na format UNIX.
Z ciekawości, co pokaże Ci

Kod: Zaznacz cały

ls -l /bin/bash

: 11 stycznia 2011, 14:53
autor: GigantV12

Kod: Zaznacz cały

-rwxr-xr-x 1 root root 700492 maj 12  2008 /bin/bash
A jak to skonwertować na format UNIX?
Ale zawsze tak mi działało, jak pisałem

Kod: Zaznacz cały

#!/bin/bash
To co ja robię źle ?

: 11 stycznia 2011, 15:00
autor: mariaczi
Jeśli nie wiesz jak skonwertować już gotowy skrypt to pofatyguj się i napisz go z paluszka po zalogowaniu się do serwera.
Jeśli to nie pomoże odsyłam do google.pl -> Pisanie skryptów w bash