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