Skip to content

Instantly share code, notes, and snippets.

@tuklusan
Last active April 21, 2020 02:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tuklusan/668db59e4d09179a7543b8e78bf6bdaa to your computer and use it in GitHub Desktop.
Save tuklusan/668db59e4d09179a7543b8e78bf6bdaa to your computer and use it in GitHub Desktop.
SANYALNET-NODE-STATUS.COM (QCOCAL VAX): DEC VAX VMS OpenVMS DCL script to report status of DECnet nodes in SANYALnet Labs in HTML: For SYS$BATCH scheduled periodically update output of this OpenVMS DCL command file, see http://sanyalnet-openvms-vax.freeddns.org:82/sanyalnet-labs-decnet-node-status.html
$! ---
$! AUTHOR: SUPRATIM SANYAL
$! http://tuklusan.decsystem.org
$! ---
$ NODELIST = "IMPVAX,KARMA,PYRTR,QCOCAL,CLOUDY,JUICHI,FEDACH,FOMFOR,OSTARA,WEXPEE,ENTEE4,RAPTOR,MACOS9,WFW311,WXPEE2,TRU64,XLVII,TSTVAX,W2000S,MACOS7,RST101,TWENEX,VAXSTN,XLIV,PIPY,XL,NANAJU"
$ NODELIST = NODELIST + ",NJEVX1,NJEVX2,TWONKY,LV,MARIAH,SHAKTI,IBM390,MOKSHA,PYDNET,IMPRTR"
$! -- don't disturb other people's nodes -- NODELIST = NODELIST + ",1.750,MASON,DUNE,ZZYZZX,ALDUR,SUBWAY,CTAKAH,MIM,A12RTR,A22RTR,23.1023,34.1023,HUB,A61RTR"
$
$ OUTPUT_HTML="dua2:[webroot.html]sanyalnet-labs-decnet-node-status.html"
$!
$ SET PROC/PRIV=ALL
$ SET NOON
$ NCP="MCR NCP"
$! FIRST, MAKE SURE OUR CLOCK IS GOOD (major drifts under SIMH possible)
$! @sys$manager:tcpip$ntp_shutdown
$! ntpdate time.google.com
$! @sys$manager:tcpip$ntp_startup
$!
$ OPEN/WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML 'OUTPUT_HTML'_TMP
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"" ""http://www.w3.org/TR/html4/loose.dtd""><html lang=""en-us""><head><TITLE>SANYALnet Labs: DECnet Node Status - DEC VAX VMS (QCOCAL)</TITLE>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<meta http-equiv=""Content-type"" content=""text/html; charset=ISO-8859-1"">"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<meta http-equiv=""refresh"" content=""300"">"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<meta http-equiv=""Cache-Control"" content=""no-cache, no-store, must-revalidate"">"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<meta http-equiv=""Pragma"" content=""no-cache"">"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<meta http-equiv=""Expires"" content=""0"">"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<meta name=""description"" content=""Status of servers communicating over DECnet networking protocol in Supratim Sanyal''s Hobbyist Laboratory"">"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<meta name=""keywords"" content=""DEC,VAX,OpenVMS,VMS,DECnet,VAX/VMS,Pathworks"">"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<link rel=""canonical"" href=""http://sanyalnet-openvms-vax.freeddns.org:82/sanyalnet-labs-decnet-node-status.html"">"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<link rel=""shortcut icon"" href=""favicon.ico""><link rel=""icon"" href=""favicon.ico"">"
$! -- no stylesheet -- WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<link rel=""stylesheet"" href=""/styles/styles.css"" />"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<meta name=""viewport"" content=""initial-scale=1""></head><body>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<div align=""center""><img src=""DIGITAL-HEADING.PNG"" alt=""SANYALnet Labs Digital Equipment Corporation DEC Heading Logo""></div>"
$ TNOW=F$TIME()
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<p><a href=""/"">QCOCAL VAX</a></p><p><img src=""/SANYALNET-LABS-LOGO.PNG"" alt=""SANYALnet | Supratim Sanyal's Computing Hobby Lab""></p>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<h1>SANYALnet Labs DECnet Nodes Status</h1>"
$! -- Start Google CSE --
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<div id='google-cse'><script>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " (function() {"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " var cx = '015567988034387983255:4ulgqks3d_a';"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " var gcse = document.createElement('script');"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " gcse.type = 'text/javascript';"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " gcse.async = true;"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " var s = document.getElementsByTagName('script')[0];"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " s.parentNode.insertBefore(gcse, s);"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML " })();"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</script>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<gcse:search></gcse:search></div>"
$! -- End Google CSE --
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<p>As of ''TNOW' UTC:</p>"
$!
$! WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<pre>"
$! DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$! SHOW CPU
$! WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre>"
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<table border=""1""><caption>SANYALnet Labs: Node Reachability over DECnet</caption>"
$ NEXT = 0
$ LOOP:
$ NODE = F$ELEMENT(NEXT,",",NODELIST)
$ IF (NODE .NES. ",")
$ THEN
$ ! TRY A LOOP; IF RESULT IS ANYTHING EXCEPT "%SYSTEM-F-UNREACHABLE" ASSUME NODE IS REACHABLE
$ PIPE (NCP LOOP NODE 'NODE') | SEARCH SYS$INPUT "%SYSTEM-F-UNREACHABLE"
$ NCPSTAT=$STATUS ! SEARCH RESULT: %X10000001 = SUCCESS, %X18D78053 = FAILED
$ IF NCPSTAT .EQ. %X10000001 ! NODE IS UNREACHABLE
$ THEN
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<tr><td bgcolor=""red"">&nbsp;&nbsp;</td>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<td><strong><pre><a target=""_blank"" href=""http://mim.update.uu.se/hecnod?node=''NODE'"">''NODE' &raquo;</a></pre></strong></td>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<td bgcolor=""red""><font color=""white""><pre>"
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ NCP SHOW NODE 'NODE'
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre><br><pre>%SYSTEM-F-UNREACHABLE, remote node is not currently reachable</pre></font></td></tr>"
$ ELSE ! IS REACHABLE
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<tr><td bgcolor=""#55ff55"">&nbsp;&nbsp;</td>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<td><strong><pre><a target=""_blank"" href=""http://mim.update.uu.se/hecnod?node=''NODE'"">''NODE' &raquo;</a></pre></strong></td>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<td bgcolor=""#55ff55""><pre>"
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ NCP SHOW NODE 'NODE'
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ NCP TELL 'NODE' SHOW EXECUTOR SUMMARY
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ NCP SHOW NODE 'NODE' COUNTERS
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre></td></tr>"
$ ENDIF
$ NEXT = NEXT + 1
$ GOTO LOOP
$ ENDIF
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</table>"
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<h1>QCOCAL Active DECnet Information</h1>"
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<h2>QCOCAL Active DECnet Areas</h2><pre>"
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ NCP SHOW ACTIVE AREAS
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre><h2>QCOCAL Active DECnet Circuits</h2><pre>"
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ NCP SHOW ACTIVE CIRCUITS
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre><h2>QCOCAL Active DECnet Nodes</h2><pre>"
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ NCP SHOW ACTIVE NODES
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre><h2>QCOCAL NJE IBM Mainfram Networking Protocol Links</h2><pre>"
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ JCP SHOW LINKS
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre><h2>QCOCAL TCPNJE / DNANJE BITNET II HNET ROUTES</h2><pre>"
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ JCP SHOW ROUTES
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre>"
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<h1>QCOCAL System Clock</h1>"
$!
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<h2>QCOCAL NTP Time Synchronization Status</h2><pre>"
$ DEFINE/USER SYS$OUTPUT FD_OUTPUTHTML ! Valid for only next image execution
$ ntpdc -c sysinfo
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</pre>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<p>Created by a DCL Command Procedure and presented by WASD Web Server / DEC VAXserver 3900 / OpenVMS VAX 7.3.</p>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<p><img src=""digital.png"" width=""200"" height=""62"" alt=""Logo of DEC (Digital Equipment Corporation)""></p>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "<p><a href=""/"">Home &raquo;</a></p>"
$ WRITE/ERROR=ERR_EXIT FD_OUTPUTHTML "</body></html>"
$ CLOSE FD_OUTPUTHTML
$!
$ IF F$SEARCH("''OUTPUT_HTML'") .NES. "" THEN DELETE/LOG/NOCONFIRM 'OUTPUT_HTML';* ! OTHERWISE WE FAIL AT VERSION 32767
$ RENAME /NOCONFIRM /LOG 'OUTPUT_HTML'_TMP 'OUTPUT_HTML'
$! PURGE /NOCONF 'OUTPUT_HTML'
$ SET FILE/PROT=(S:R,O:R,G:R,W:R) 'OUTPUT_HTML'
$ DIR /FULL 'OUTPUT_HTML'
$ EXIT
$!
$ ERR_EXIT:
$ CLOSE FD_OUTPUTHTML
$ EXIT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment