The "status" output from the master netconport console of bunch of forked servers gives player numbers, but this includes bots controlling boss infected and survivors (which is why the number is rarely between 1 and 3). So if you want to get some kind of realistic aggregate player numbers, or if indeed you're not using fork but are using netconport consoles, you need something else:
for i in `seq 9000 9012`; \ do echo -e "PASS swordfish\nstatus" \ | nc -q 1 localhost $i 2>/dev/null \ | egrep -m 1 "^players : [0-9] humans, [0-9] bots \([0-9] max\) \((not )?hibernating\)" \ | sed -r "s/^players : ([0-9]) humans, [0-9] bots \([0-9] max\) \((not )?hibernating\).*$/\1/"; done \ | awk 'BEGIN {total=0} {total +=$1} END {print total}' http://pastebin.127001.org/315 This boils down to: - Loop through netconport ports (change to suit) - For each port, we want to issue the PASS command with appropriate password (no that's not our real password, this time :P ), and then the status command (alter password to suit; if not using passwords, remove everything except status) - Use netcat to push that command to the server (change localhost to your server's IP if you're not running this locally), close the connection after 1 second, and silently redirect errors to the bit bucket (like if there's nothing listening on that port) - Find the line containing the number of players - Alter that line to _only_ display the number of players and nothing else - After looping through all servers, total up the numbers I know it says a 1 second delay per server, but it actually goes a lot faster than that. Not sure if this is useful to anyone, but there it is. Comments, suggestions, and improvements welcome :) Philip Cass _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlds_linux