Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Bash in Shell ok, Über Bash Aufgerufen error

Frage Entwicklung Batch & Shell

Mitglied: Loip104

Loip104 (Level 1) - Jetzt verbinden

22.12.2013, aktualisiert 21:40 Uhr, 1631 Aufrufe, 2 Kommentare

Servus,


Ich habe grade ein SourceServer Start script für CS:GO etwas für mich angepasst,
Insbesondere habe ich SU geadded.

Nur leider bekomme ich ein Kleines Problem .
Wen ich das Script als "root" ausführe direkt in der Shell ist alles io es läuft durch und der der Server startet auch.

01.
root@steam:/home/steam/start-scripte# ./one-war.sh start 
02.
Start oneWAR-hl2
Wen ich dieses Script nun Aber aus einem Bash script heraus aufrufe erhalte ich einen Syntex fehler.

01.
root@steam:/home/steam/start-scripte# /etc/init.d/HL2-MASTER 
02.
root@steam:/home/steam/start-scripte# one-war.sh: 16: one-war.sh: function: not found 
03.
one-war.sh: 45: one-war.sh: Syntax error: "}" unexpected
Ich kann mit nur leider Überhaupt nicht erklären wieso es da überhaupt zu unterschieden kommt.


Hier mal das start script.
01.
#!/bin/bash  
02.
 
03.
 
04.
 
05.
 
06.
 
07.
LOW_USER="steam" 
08.
DIR="/home/steam/games/hl2/one-war" # Absolute dir to the CS:S server 
09.
DEAMON="srcds_run" # Deamon to open; normaly not to change 
10.
IP="94.23.164.136" # IP of you server 
11.
PORT="27045" # Default port of the CS:S Server is 27015 
12.
PARAMS="-game hl2mp -ip $IP -port $PORT" # Deamon Parameters 
13.
PARAMS2="+map dm_lockdown +maxplayers 16 +tv_port 27046 +clientport 27047" # Deamon Parameters 
14.
SCREENNAME="oneWAR-hl2" # A unique name for the screen instance of the server 
15.
 
16.
function init { 
17.
if [ -z "$DIR" ]; then 
18.
 echo "Please fill out the DIR variable." 
19.
 exit 0 
20.
fi 
21.
if [ -z "$DEAMON" ]; then 
22.
 echo "Please fill out the DEAMON variable." 
23.
 exit 0 
24.
fi 
25.
if [ -z "$PARAMS" ]; then 
26.
 echo "Please fill out the PARAMS variable." 
27.
 exit 0 
28.
fi 
29.
if [ -z "$PARAMS2" ]; then 
30.
 echo "Please fill out the PARAMS2 variable." 
31.
 exit 0 
32.
fi 
33.
if [ -z "$SCREENNAME" ]; then 
34.
 echo "Please fill out the SCREENNAME variable." 
35.
 exit 0 
36.
fi 
37.
if [ -z "$IP" ]; then 
38.
 echo "Please fill out the IP variable." 
39.
 exit 0 
40.
fi 
41.
if [ -z "$PORT" ]; then 
42.
 echo "Please fill out the PORT variable." 
43.
 exit 0 
44.
fi 
45.
46.
 
47.
 
48.
 
49.
 
50.
function start_server { 
51.
 if [[ `su - $LOW_USER -c "screen -ls | grep $SCREENNAME"` ]]; then 
52.
 echo "The server runs already as screen instance $SCREENNAME" 
53.
 else 
54.
 echo "Start $SCREENNAME" 
55.
 if [ -d "$DIR" ]; then 
56.
 cd "$DIR" 
57.
 su - $LOW_USER -c "screen -d -m -S $SCREENNAME $DIR/$DEAMON $PARAMS $PARAMS2" 
58.
 else 
59.
 echo "Please fill out the DIR variable" 
60.
 fi 
61.
 fi 
62.
}  
63.
 
64.
function stop_server { 
65.
 if [[ `screen -ls | grep $SCREENNAME` ]]; then 
66.
 echo -n "Sop $SCREENNAME" 
67.
 kill `screen -ls | grep $SCREENNAME | awk -F . '{print $1}'| awk '{print $1}'` 
68.
 echo " ...done" 
69.
 else 
70.
 echo "Can not find the screen instance $SCREENNAME" 
71.
 fi 
72.
73.
 
74.
function update_server { 
75.
 echo "Ausgebaut Sry" 
76.
77.
 
78.
function wrong_input { 
79.
 echo "Usage: $0 {start|stop|restart|update|console|check}" 
80.
 exit 1 
81.
82.
 
83.
function get_screen { 
84.
 screen -r $SCREENNAME 
85.
86.
 
87.
function check_ping { 
88.
 if [ "`/usr/bin/quakestat -a2s $IP:$PORT | grep -v ADDRESS | awk '{ print $2 }' | awk -F/ ' { print $1}'`" = "DOWN" ]; then 
89.
 sleep 10 
90.
 if [ "`/usr/bin/quakestat -a2s $IP:$PORT | grep -v ADDRESS | awk '{ print $2 }' | awk -F/ ' { print $1}'`" = "DOWN" ]; then 
91.
 stop_server 
92.
 start_server 
93.
 fi 
94.
 fi 
95.
96.
 
97.
init 
98.
 
99.
case "$1" in 
100.
 start) 
101.
 start_server 
102.
 ;; 
103.
 
104.
 stop) 
105.
 stop_server 
106.
 ;; 
107.
 
108.
 restart) 
109.
 stop_server 
110.
 start_server 
111.
 ;; 
112.
 
113.
 update) 
114.
 update_server 
115.
 ;; 
116.
 
117.
 console) 
118.
 get_screen 
119.
 ;; 
120.
 
121.
 check) 
122.
 check_ping 
123.
 ;;  
124.
 
125.
 *) 
126.
 wrong_input 
127.
 ;; 
128.
esac 
129.
exit 0

Und über dieses Script wird es aufgerufen
01.
#!/bin/bash 
02.
 
03.
#sh enno001.sh start & 
04.
#sh jump.sh start & 
05.
sh /home/steam/start-scripte/one-war.sh start & 
06.
#sh rel-pms.sh start & 
07.
#sh zeibig-fun.sh start & 
08.
 
09.
 
10.
 
11.
exit 1
Mitglied: Arano
LÖSUNG 22.12.2013, aktualisiert um 21:40 Uhr
Hi,

ganz sicher bin ich mir auch gerade nicht ABER
sh != bash
shell und bash sind zwei __unterschiedliche__ Interpreter !

sh: function
bash: function

Demnach ist dein Script nach der Bash-Syntax geschrieben, du aber rufst es mit dem Shell-Interpreter auf, dieser wiederum kann nun in der Syntax keine Logik feststellen und wirft die entsprechende Fehlermeldung !

Ich würde dir vorschlagen dich in diesem Fall für einen gemeinsamen Interpreter zu entscheiden -> bash.
Dann musst du nur den Aufruf des Scriptes der Bash-Syntax nach anpassen.


~Arano
Bitte warten ..
Mitglied: Loip104
22.12.2013 um 21:40 Uhr
Danke dir fürdiesen hinweis.

hat nun Geklappt
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Crontab mit Shell Probleme (9)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Windows 8
gelöst Active Directory Default User.v2 Profile - Windows 8.1 Apps Error (4)

Frage von adm2015 zum Thema Windows 8 ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Linux Desktop
Webseite aufgerufen - Linux gehackt (5)

Link von BirdyB zum Thema Linux Desktop ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...