Subject: Re: Logging off users Date: Thu, 19 Mar 1998 10:28:28 -0500 From: John Zoltak To: HP3000-L@RAVEN.UTC.EDU Here is a job that I use to abort users left on over night. This job lets me exclude job/sessions based on anything in the SHOWJOB output. I have a few different jobs that must stay on. This job will do an ABORTJOB, ABORTIO on the ldev and a NSCONTROL Killsess on the Sessions. It will try only three times and then continue on with the backup of whatever I can get. I have this limit so that if I get a hung session, it won't loop forever. I have this job streamed by the backup job. The backup job waits for a message file which is why the FCOPY at the end of this job. John Zoltak North American Mfg Co !Job AbortJob,User.Account;HiPri;Pri=Bs;OutClass=,1,1 ! !################################################################ !# See if this is the FIRST Abortjob Stream !# If so create the AbortChk file initialized !# to one. Otherwise read the AbortCount from !# the file and increment it. !################################################################ ! !File AbortChk,Old;Dev=Disc !If Lft(HPSTREAMEDBY,8) = "ABORTJOB" Then ! Input AbortCount < *AbortChk !# make AbortCount into an integer type of variable and add 1 ! SetVar AbortCount !AbortCount + 1 !Else ! SetVar AbortCount 1 ! Purge AbortChk ! Build AbortChk;Rec=-80,,B,Ascii;Disc=5 !EndIf !Echo !AbortCount > *AbortChk ! !################################################################ !# MAKE SURE WE CAN ISSUE OPERATOR COMMANDS! !################################################################ ! !Opcoms ! !################################################################ !# Stop the log processes !################################################################ ! !Continue !Log OrLog,Stop !Continue !Log MmLog,Stop !Continue !Log CanLog,Stop ! !################################################################ !# Generate Master ShowJob File !################################################################ ! !Purge Showjob,Temp !Build ShowJob;Rec=-80,,,Ascii;Temp !File Showjob,OldTemp;Dev=Disc !Showjob Exec;*Showjob ! !################################################################ !# Copy to ShowJob Message File For First Pass !################################################################ ! !Purge ShowjobM,Temp !Build ShowjobM;Rec=-80,,,Ascii;Temp;Msg !File ShowjobM,OldTemp;Dev=Disc ! !FCopy From=*Showjob;To=*ShowjobM ! !################################################################ !# Re-Build Master ShowJob File w/o non-abortables !################################################################ ! !Purge Showjob,Temp !Build ShowJob;Rec=-80,,,Ascii;Temp !File Showjob,OldTemp;Dev=Disc ! !################################################################ !# Read Message File - Copy back to Showjob File !################################################################ ! !While FInfo("ShowjobM",19) > 0 ! Input User < *ShowjobM ! If Lft(User,1) = "#" Then ! SetVar Counter 0 ! If Str(User,19,4) = " 20" Then ! SetVar Counter Counter + 1 ! EndIf ! SetVar Counter Counter + Pos("MCP.LIB", User) ! SetVar Counter Counter + Pos("SUPRVISR,", User) ! SetVar Counter Counter + Pos("MTRUCK0,", User) ! SetVar Counter Counter + Pos("MAINTJOB,", User) ! SetVar Counter Counter + Pos("NA.COPY", User) ! SetVar Counter Counter + Pos("NOABORT,", User) ! If Counter = 0 Then ! Echo Will Abort ![RTrim("!User")] ! Echo ![RTrim("!User")] >> *Showjob ! Else ! Echo Will NOT Abort ![RTrim("!User")] ! EndIf ! EndIf !EndWhile ! !################################################################ !# Now, I have a Showjob File of only the !# Jobs and Sessions that are to be Aborted !################################################################ ! !################################################################ !# Copy Showjob to Message File for Aborts !################################################################ ! !Purge ShowjobM,Temp !Build ShowjobM;Rec=-80,,,Ascii;Temp;Msg !File ShowjobM,OldTemp;Dev=Disc ! !FCopy From=*Showjob;To=*ShowjobM ! !While FInfo("ShowjobM",19) > 0 ! Input User < *ShowjobM ! SetVar Session RTrim(Lft(User,7)) ! SetVar LDev RTrim(Str(User,19,4)) ! Continue ! Abortjob !Session ! If Lft(Session,2) = "#S" Then ! Continue ! AbortIo !LDev ! EndIf !EndWhile ! !################################################################ !# Wait awhile for J/S's to Abort !################################################################ ! !Pause 60 ! !################################################################ !# Copy to Message File for KILLSESS Pass !################################################################ ! !Purge ShowjobM,Temp !Build ShowjobM;Rec=-80,,,Ascii;Temp;Msg !File ShowjobM,OldTemp;Dev=Disc ! !FCopy From=*SHowjob;To=*ShowjobM ! !While FInfo("ShowjobM",19) > 0 ! Input User < *ShowjobM ! SetVar Session RTrim(Lft(User,7)) ! ErrClear ! Tell !Session ! If CiError = 0 Then ! Continue ! NSControl KillSess=!Session ! EndIf !EndWhile ! !Showjob !File Lp;Dev=CsLaser !Print Showjob;Out=*Lp ! !################################################################ !# See if we're still logging !################################################################ ! !SetVar StillLogging False !ErrClear !Continue !ShowLogStatus OrLog !If CiError = Ok Then ! SetVar StillLogging True !EndIf ! !ErrClear !Continue !ShowLogStatus MmLog !If CiError = Ok Then ! SetVar StillLogging True !EndIf ! !ErrClear !Continue !ShowLogStatus CanLog !If CiError = Ok Then ! SetVar StillLogging True !EndIf ! !################################################################ !# If the log processes are still running, then we need to try !# abortjob again. But if we've tried this three times, just !# skip it and continue with backup so we don't loop forever. !################################################################ ! !If StillLogging Then ! If AbortCount < 3 Then ! Stream AbortJob.Job ! Eoj ! EndIf !EndIf ! !FCopy From=MsgDummy;To=Msg ! !Eoj