Changeset 13


Ignore:
Timestamp:
May 16, 2014, 2:13:55 PM (8 years ago)
Author:
alloc
Message:

Instances script updated, more info in list and optional command to show a single instace with details

Location:
scripts/usr/local/bin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • scripts/usr/local/bin/7dtd-common.sh

    r10 r13  
    11#!/bin/bash
    2 # Version 1
     2# Version 2
    33
    44# Provides common functions for 7dtd-scripts. Not intended to be run directly.
     
    5252}
    5353
     54# Get the PID of the instance if it is running, 0 otherwise
     55# Params:
     56#   1: Instance name
     57# Returns:
     58#   0 if not running
     59#   PID otherwise
     60getInstancePID() {
     61        run=$(isRunning $1)
     62        if [ $run -eq 1 ]; then
     63                cat $(getInstancePath $1)/7dtd.pid
     64        else
     65                echo 0
     66        fi
     67}
     68
    5469# Get a single value from a serverconfig
    5570# Params:
  • scripts/usr/local/bin/7dtd-instances.sh

    r11 r13  
    11#!/bin/bash
    2 # Version 1
     2# Version 2
    33
    44# Lists available 7dtd instances.
     
    99checkRootLoadConf
    1010
    11 printf "%-*s | %-*s | %-*s\n" 20 "Instance name" 8 "Running" 7 "Players"
    12 printf -v line "%*s-+-%*s-+-%*s\n" 20 " " 8 " " 7 " "
    13 echo ${line// /-}
    14 for I in $SDTD_BASE/instances/*; do
    15         ins=`basename $I`
    16         run=$(isRunning $ins)
    17         if [ $run -eq 1 ]; then
    18                 run="yes"
    19                 tel=$(telnetCommand $ins lp)
     11listInstances() {
     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
     35showInfo() {
     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)
    2057                cur=`echo $tel | sed "s/\r/\n/g" | sed "s/^ //g" | grep "Total of " | cut -d\  -f 3`
     58                echo "Players: $cur"
    2159        else
    22                 run="no"
    23                 cur=0
     60                echo "Status: NOT running"
    2461        fi
    2562
    26         max=$(getConfigValue $ins ServerMaxPlayerCount)
    27        
    28         printf "%-*s | %*s |   %2d/%2d\n" 20 "$ins" 8 "$run" $cur $max
    29 done
    30 exit 0
     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
     91showHelp() {
     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
     100COMMAND=${1:-list}
     101
     102case "$COMMAND" in
     103        list)
     104                listInstances
     105        ;;
     106        show)
     107                showInfo $2
     108        ;;
     109        *)
     110                showHelp $COMMAND
     111esac
     112exit 1
Note: See TracChangeset for help on using the changeset viewer.