I should also mention, I'm going to be releasing a plugin soon that lets you set a cvar to make -autoupdate exit the game immediately instead of at map change.
- Neph On Thu, Jun 5, 2008 at 4:44 PM, Nephyrin Zey <[EMAIL PROTECTED]> wrote: > Hey guys, > > I've written a srcds_run replacement script called 'nemrun' along with > a helper python script 'srcupdatecheck'. This script is meant to be a > no-nonsense srcds_run replacement with some advanced features: > - Able to handle -autoupdate, including on orangebox games and setups > with ./steam in an unusual place > > - Able to update servers that share a install directory: > - First server to detect an update on restart (from > map-change-restart provided by -autoupdate, or due to a manual 'quit' > or other exit/crash) will 'lock' the directory with an update.lock > file > - Other servers (running in screens) are sent a 'quit' message > - Other servers see the first server is updating them and wait for > it to complete > - Script can be configured to retry a failed update x times over y seconds > - Other servers periodically make sure the server/runscript doing > the update hasn't crashed (and take over if so) > - Once update has been complete lock is removed and all servers > restart in unison > > - Logs restart/update events into a separate reboot.log file, which > can be be named statically or given dated names (such as > rebootlogs/reboot_YYYYMMDDHHmmSS.log) > > - Core files can be turned on and named dynamically (again with the > option of including YYYY/MM/DD/etc datestamps and folder prefixes) > > - the '$GAME/downloads' folder can be optionally 'cleaned' upon > reboot, by deleting orphans (files without associated .ztmp or vice > versa) as well as all files over X days old. > > - (minor) $GAME/addons/bin is added to the bin search path, so you can > make that folder and put binaries (dll's/so's) for addons/extensions > in there instead of polluting the bin (or orangebox/bin) folder. > > == > Because this script must be able to check for updates without actually > performing the updates (because it might need to kill other servers > running on the same install path) I have included my 'srcupdatecheck' > script. This script, which requires Python 2.3+ be installed (it will > be on most server systems), takes a steam.inf file as input > (./srcupdatecheck path/to/steam.inf) and sends a packet to the master > server to see if it is up to date. It is a rather crude method, but > proves very reliable and quick (can provide an update yes/no in 3 > seconds as opposed to waiting 30+ for the hldsupdatetool, which also > would go ahead and perform an update without prompting) > > === > > REQUIREMENTS: > - bash (other modern shells probably work, but much of the syntax wont > work with a standard 'sh' shell. #!/bin/bash is specified in the > header, so when you run the script from any shell it will > automatically be put in its own bash sub-instance) > - Python 2.3-2.5 (others not tested) with standard (regex/socket/etc) > libraries for srcdsupdatecheck (srcdsupdatecheck required if using > -autoupdate) > - A willingness to report bugs to me (this is beta) > > You MUST do ./nemrun --help and read the instructions - it uses > several command line parameters not used in srcds_run. > > Latest Beta available here: (you need: nemrun, srcupdatecheck) > http://www.nephyrin.net/tools/nemrun/latest-beta/ > > === > > INSTRUCTIONS > 1. Get nemrun and srcupdatecheck from > http://www.nephyrin.net/tools/nemrun/latest-beta/ > 2. "chmod +x nemrun srcupdatecheck" > 3. "./nemrun --help" > > Example launch screen (taken from my test server): > > screen -d -m -U -S testing ./nemrun -nemlog > "runlogs/Testing_%Y%m%d%H%M%S.log" \ > -cleandownloads 10 -autoupdate -steamdir ../.. -srvdir tfbase \ > -updatetries 3 -updatedelay 15 -sharedscreens proving,stomping \ > -corefile "cores/Testing_%Y%m%d%H%M%S.core" \ > \ > -game tf +exec testing.cfg -ip 75.125.209.5 -port 27015 \ > +maxplayers 32 +map pl_goldrush +servercfgfile testing.cfg \ > +mapcyclefile map_testing.txt +motdfile testingmotd.txt \ > +sv_logsdir logs_testing +log on \ > +fps_max 128 > > THINGS TO NOTE: > - Note the 'required' command switches when using, say, -autoupdate. > It wont work without -srvdir / -steamdir set. The script will warn you > when you set things wrong > - Both -nemrun and -corefile take 'date' style date strings in > addition to regular strings. Type "man date" for more information and > see my example command. > - 'steamdir' is the path to steam from the server directory or an absolute > path. > - 'srvdir' is the path to the ROOT of the server (if you have > /path/server/orangebox/tf, the srvdir is '/path/server') FROM the > steam dir. Both of these can be absolute paths if you want to be safe. > - 'sharedscreens' is a comma delimited list of other 'screens' (as > named by "screen -S name") running servers ON THIS SAME INSTALL PATH > that are USING THIS SAME RUNSCRIPT. You MUST specify these if you want > updates to work IF you're running multiple servers from the same > install path, so it knows to kill them before trying to update the > shared directory. Feel free to message me if this is confusing. For > instance, if you run servers in screens named "a" "b" and "sam", then > the server in screen "a" should have "-sharedscreens b,sam" (assuming > they're all running out of myservers/serverblah/) > - Servers in SEPARATE directories/installs should NOT use > -sharedscreens, as they wont be affected if another server is updating > its own independant directory. > > == > CONTACT ME > with bugs or suggestions or questions or whatever. You may respond to > this thread, or IM me at: > Nephyrin (Skype/AIM) > [EMAIL PROTECTED] (MSN/XMPP(Jabber)) > [EMAIL PROTECTED] (GTalk/XMPP(Jabber)) > > I'm on nearly 24/7 > > Remember this is *BETA* quality, I've been using it on my 32x servers > for some days, but that doesn't guarantee it wont break stuff ;-P > > - Neph > _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlds_linux

