1 | #!/bin/bash |
---|
2 | # Version 2 |
---|
3 | |
---|
4 | # Lists available 7dtd instances. |
---|
5 | # Returns: |
---|
6 | # 0 |
---|
7 | |
---|
8 | . /usr/local/bin/7dtd-common.sh |
---|
9 | checkRootLoadConf |
---|
10 | |
---|
11 | listInstances() { |
---|
12 | printf "%-*s | %-*s | %-*s | %-*s\n" 20 "Instance name" 8 "Running" 7 "Players" 5 "Port" |
---|
13 | printf -v line "%*s-+-%*s-+-%*s-+-%*s\n" 20 " " 8 " " 7 " " 5 " " |
---|
14 | echo ${line// /-} |
---|
15 | for I in $SDTD_BASE/instances/*; do |
---|
16 | ins=`basename $I` |
---|
17 | run=$(isRunning $ins) |
---|
18 | if [ $run -eq 1 ]; then |
---|
19 | run="yes" |
---|
20 | tel=$(telnetCommand $ins lp) |
---|
21 | cur=`echo $tel | sed "s/\r/\n/g" | sed "s/^ //g" | grep "Total of " | cut -d\ -f 3` |
---|
22 | else |
---|
23 | run="no" |
---|
24 | cur=0 |
---|
25 | fi |
---|
26 | |
---|
27 | max=$(getConfigValue $ins ServerMaxPlayerCount) |
---|
28 | port=$(getConfigValue $ins ServerPort) |
---|
29 | |
---|
30 | printf "%-*s | %*s | %2d/%2d | %5d\n" 20 "$ins" 8 "$run" $cur $max $port |
---|
31 | done |
---|
32 | exit 0 |
---|
33 | } |
---|
34 | |
---|
35 | showInfo() { |
---|
36 | if [ -z $1 ]; then |
---|
37 | echo "Missing parameter <instance>" |
---|
38 | exit 1 |
---|
39 | fi |
---|
40 | checkInstance $1 |
---|
41 | |
---|
42 | line() { |
---|
43 | printf " %-*s %s\n" 15 "$1" "$2" |
---|
44 | } |
---|
45 | |
---|
46 | echo |
---|
47 | |
---|
48 | echo "7dtd instance: $1" |
---|
49 | echo |
---|
50 | |
---|
51 | res=$(isRunning $1) |
---|
52 | if [ $res -eq 1 ]; then |
---|
53 | echo "Status: Running" |
---|
54 | echo "Open ports:" |
---|
55 | netstat -nlp | grep $(getInstancePID $1) | sed -r 's/^([^ ]*)\s+.*[^ :]*:([^ ]*).*[^ :]*:[^ ]*.*/ \2 (\1)/g' | sort |
---|
56 | tel=$(telnetCommand $1 lp) |
---|
57 | cur=`echo $tel | sed "s/\r/\n/g" | sed "s/^ //g" | grep "Total of " | cut -d\ -f 3` |
---|
58 | echo "Players: $cur" |
---|
59 | else |
---|
60 | echo "Status: NOT running" |
---|
61 | fi |
---|
62 | |
---|
63 | echo |
---|
64 | echo "Game info:" |
---|
65 | line "Server name:" $(getConfigValue $1 ServerName) |
---|
66 | line "Password:" $(getConfigValue $1 ServerPassword) |
---|
67 | line "Max players:" $(getConfigValue $1 ServerMaxPlayerCount) |
---|
68 | line "World:" $(getConfigValue $1 GameWorld) |
---|
69 | |
---|
70 | echo |
---|
71 | echo "Network info:" |
---|
72 | line "Port:" $(getConfigValue $1 ServerPort) |
---|
73 | line "Public:" $(getConfigValue $1 ServerIsPublic) |
---|
74 | if [ "$(getConfigValue $1 ControlPanelEnabled)" = "false" ]; then |
---|
75 | cp="off" |
---|
76 | else |
---|
77 | cp="Port $(getConfigValue $1 ControlPanelPort), Pass $(getConfigValue $1 ControlPanelPassword)" |
---|
78 | fi |
---|
79 | line "Control Panel:" "$cp" |
---|
80 | if [ "$(getConfigValue $1 TelnetEnabled)" = "false" ]; then |
---|
81 | tn="off" |
---|
82 | else |
---|
83 | tn="Port $(getConfigValue $1 TelnetPort), Pass $(getConfigValue $1 TelnetPassword)" |
---|
84 | fi |
---|
85 | line "Telnet:" "$tn" |
---|
86 | |
---|
87 | echo |
---|
88 | exit 0 |
---|
89 | } |
---|
90 | |
---|
91 | showHelp() { |
---|
92 | name=`basename $0` |
---|
93 | echo "Unknown parameter: $1" |
---|
94 | echo "Usage:" |
---|
95 | echo " $name [list] - List all instances" |
---|
96 | echo " $name show <instance> - Show detailed info on the given instance" |
---|
97 | exit 0 |
---|
98 | } |
---|
99 | |
---|
100 | COMMAND=${1:-list} |
---|
101 | |
---|
102 | case "$COMMAND" in |
---|
103 | list) |
---|
104 | listInstances |
---|
105 | ;; |
---|
106 | show) |
---|
107 | showInfo $2 |
---|
108 | ;; |
---|
109 | *) |
---|
110 | showHelp $COMMAND |
---|
111 | esac |
---|
112 | exit 1 |
---|