[+] Bash - b

Potrzebujesz pomocy z C, C++, perl, python, itp.
GigantV12
Posty: 18
Rejestracja: 05 grudnia 2010, 18:09

[+] Bash - błąd w skrypcie

Post 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
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post 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.
GigantV12
Posty: 18
Rejestracja: 05 grudnia 2010, 18:09

Post 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ą.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Wstaw sobie do skryptu w drugą linię

Kod: Zaznacz cały

set -x
i znajdziesz gdzie skrypt ma błąd.
GigantV12
Posty: 18
Rejestracja: 05 grudnia 2010, 18:09

Post 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
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post 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
?
GigantV12
Posty: 18
Rejestracja: 05 grudnia 2010, 18:09

Post 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
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post 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
GigantV12
Posty: 18
Rejestracja: 05 grudnia 2010, 18:09

Post 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 ?
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post 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
ODPOWIEDZ