[conquest] Improved AWK script for monitoring metaservers

John johnclute at imagi.net
Mon Jun 22 22:26:59 MDT 2009


Wow, great script....
On Mon, 2009-06-22 at 11:24 -0400, madams at phantomware.ca wrote:
> For the record, here is an improved AWK script that accepts some
> variables via the command line.
> 
> I use it like this in my crontab:
> 
> @hourly    ~/bin/scripts/conquest-metaserver-monitor -v email=matt,tamarella
> 
> But you can also specify an optional metaserver name & port number
> using additional -v arguments.
> 
> 
> Hope someone finds this useful,
> 
> Matt
> 
> ===File ~/bin/scripts/conquest-metaserver-monitor===========
> #!/usr/bin/awk -f
> # 
> # Queries a Conquest metaserver for games with active players
> # See http://conquest.radscan.com/conquest.html for more info
> # 
> # Accepts the following -v parameters
> #   server (name of metaserver to query)
> #   port   (port of metaserver to query)
> #   email  (email addresses to notify, separated by commas)
> #
> # Fields
> # =====================================================================
> #  ?  SERVER_HOST  PORT  NAME  VERSION  MOTD  MAX_SLOTS  ACTIVE#  VACANT#  ROBOT#  ?  ?  CONTACT_EMAIL  LOCALTIME
> #  1  2            3     4     5        6     7          8        9        10      11 12 13             14
> #
> 
> BEGIN {
>     if (!server)
>         server = "conquest.radscan.com"
>     if (!port)
>         port = "1700"
>     
>     if (!email) {
>         printf "%s: You must set the email addresses to notify using `-v email=addr1,addr2'\n", ARGV[0] > "/dev/stderr"
>         exit
>     }
>         
>     FS="|"
>     NetService = "/inet/tcp/0/" server "/" port
>     print "name" |& NetService
> 
>     while ((NetService |& getline) > 0) {
>         if ($8 > 0) {
>             printf "echo \"Conquest server has %d/%d ACTIVE players (%d VACANT, %d ROBOT)\nconquestgl -f -s %s:%d\n\n\" | mail -s \"ACTIVE CONQUEST GAME\" %s", 
>                 $8, $7, $9, $10, $2, $3, email | "/bin/sh"
>             close("/bin/sh")
>         }
>     }
> 
>     close(NetService)
> }
> ============================================================




More information about the Conquest mailing list