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, 1638 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
Router & Routing

192.168er Adresse im öffentlichen Netz

(2)

Erfahrungsbericht von visco-c zum Thema Router & Routing ...

Ähnliche Inhalte
Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (22)

Frage von Driphex zum Thema Exchange Server ...

Windows Systemdateien
net 4.6.2 Error bei Installation (1)

Frage von leofabian zum Thema Windows Systemdateien ...

Ubuntu
Nregp ereignis für bash-script (1)

Frage von rsadmchef zum Thema Ubuntu ...

Datenbanken
gelöst Fehler 1064 you have an error in SQL syntax datenbankabfrage, Search and Replace (1)

Frage von Blackshirt zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (29)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (22)

Frage von Driphex zum Thema Exchange Server ...

Hyper-V
HYPER V und USB (16)

Frage von Hendrik2586 zum Thema Hyper-V ...

SAN, NAS, DAS
Backupserver für KMU (14)

Frage von Leo-le zum Thema SAN, NAS, DAS ...