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

Reply via email to