You could also do it in perl. On Wed, Nov 19, 2008 at 8:26 AM, <[EMAIL PROTECTED]> wrote:
> Yeah, without -q netcat never disconnects from the first server: > > -q seconds after EOF on stdin, wait the specified number of seconds and > then quit. > > I don't know if there's some alternative easy way to do that > programatically... Telnet might let you do it, but probably won't be as > easy > > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] On Behalf > > Of Jordy van Wolferen > > Sent: 19 November 2008 16:20 > > To: Half-Life dedicated Linux server mailing list > > Subject: Re: [hlds_linux] (Possibly) Useful bash snippet for > > getting totalplayer numbers using multiple netconport consoles > > > > Thanks! I'm testing it, but my netcat (0.7.1) on arch linux > > doesn't support -q and without it doesn't show anything. I'll > > try to look into it, when I'm home. I was thinking about > > making some simple scripts/tools too. > > > > On Wed, Nov 19, 2008 at 4:17 PM, <[EMAIL PROTECTED]> wrote: > > > 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 > > > > > > > _______________________________________________ > > To unsubscribe, edit your list preferences, or view the list > > archives, please visit: > > http://list.valvesoftware.com/mailman/listinfo/hlds_linux > > > > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlds_linux > -- --------- [EMAIL PROTECTED] _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlds_linux