|
SoftTree Technologies
Technical Support Forums
|
|
Author |
Message |
Jason Hoskins
Joined: 12 Mar 2004 Posts: 68
|
|
Search and Replace within all scripts |
|
Is there a way to search and replace certain text in all JAL scripts in my job database? For example, I want to change all "24x7.com" to "24x7change.net" in all of my scripts.
|
|
Tue Jul 29, 2008 9:54 am |
|
|
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7903
|
|
|
|
There is no built-in global search and replace function, but you can create a relatively simple script job to do that.
Here is an example for 24x7 Multi-platform Edition written in JavaScript. http://www.softtreetech.com/support/phpBB2/viewtopic.php?t=22420&highlight=global+replace
You can do something similar in JAL. Here is a slightly modified example from JobList topic from the 24x7 on-line help file
|
|
// declare script variables
Dim( job_list, string )
Dim( no_more, boolean )
Dim( job_id, string )
Dim( job_script, string )
// build job list
JobList( "", job_list )
// parse the list
isEqual( job_list, "", no_more )
LoopUntil( no_more, END_LOOP )
// get next job ID
GetToken(",", job_list, job_id )
// get job script
JobDescribe( job_id, "SCRIPT", job_script )
// replace all occurrences of 24x7.com with 24x7change.net using custom ReplaceAll
// statement (see example in the Example Jobs.dat)
ReplaceAll( job_script, "24x7.com", "24x7change.net ")
// modify job script
JobModify( job_id, "SCRIPT", job_script )
isEqual( job_list, "", no_more )
END_LOOP: |
Similar thing can be also done in a VBScript job
|
|
Tue Jul 29, 2008 10:34 am |
|
|
Jason Hoskins
Joined: 12 Mar 2004 Posts: 68
|
|
Script truncated |
|
My scripts are being truncated. Is there a limit on the string type?
Thanks.
|
|
Fri Aug 15, 2008 3:44 pm |
|
|
Jason Hoskins
Joined: 12 Mar 2004 Posts: 68
|
|
New Job numbers |
|
Also, it is assigning new job IDs. Is there any way to avoind both of these issues without modifying manually?
|
|
Fri Aug 15, 2008 4:04 pm |
|
|
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7903
|
|
|
|
Inline scripts have 32 KB size limit, offline scripts referenced via @SCRIPT macro have no size limit for number of characters but may not have more than 32765 lines of code (I cannot imagine a job of this size). It is also possible to move common parts of job scripts into user-defined script library.
|
|
Fri Aug 15, 2008 5:35 pm |
|
|
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7903
|
|
|
|
I'm not sure I understand what you meant by "it is assigning new job IDs" Please provide steps to reproduce this issue.
|
|
Fri Aug 15, 2008 5:36 pm |
|
|
Jason Hoskins
Joined: 12 Mar 2004 Posts: 68
|
|
Script Size |
|
Is it possible to determine the script size so I can exclude modification if > 32 KB? I would log this instead to be a manual update.
|
|
Mon Aug 18, 2008 8:19 am |
|
|
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7903
|
|
|
|
You can use File/Export menu to save the script into a file and then check the resulting file size.
|
|
Mon Aug 18, 2008 10:53 am |
|
|
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7903
|
|
|
|
I meant the menu in the script editor.
|
|
Mon Aug 18, 2008 10:54 am |
|
|
Jason Hoskins
Joined: 12 Mar 2004 Posts: 68
|
|
|
|
I followed it through and the job_script variable is correct for this statement. It contains all 79 lines. I run
JobModify( job_id, "SCRIPT", job_script )
and the script is truncated to 12 lines every time.
Thanks for the help!
|
|
Mon Aug 18, 2008 1:07 pm |
|
|
Jason Hoskins
Joined: 12 Mar 2004 Posts: 68
|
|
|
|
21 lines actually every time. Is there a limitation on JobModify?
|
|
Mon Aug 18, 2008 1:13 pm |
|
|
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7903
|
|
|
|
Sorry, I misunderstood your original post. I assumed you were referring to regular job scripts, not dynamically created scripts.
Are you sure the truncation occurs during JobModify operation and not in ReplaceAll?
|
|
Mon Aug 18, 2008 1:29 pm |
|
|
Jason Hoskins
Joined: 12 Mar 2004 Posts: 68
|
|
|
|
Yes. I followed it all the way through and the variable is correct.
|
|
Mon Aug 18, 2008 1:34 pm |
|
|
Jason Hoskins
Joined: 12 Mar 2004 Posts: 68
|
|
|
|
Here is my script. Line 108 has the problem:
// declare script variables
Dim( job_list, string )
Dim( no_more, boolean )
Dim( job_id, string )
Dim( job_script, string )
Dim( job_script_msg, string )
Dim( job_script_msg_ori, string )
Dim( job_script_ori, string )
Dim job_script_msg_code string
dim job_script_msg_code_ori string
Dim( script_changes, boolean)
Dim( msg_changes, boolean)
Dim( i number)
Dim (result, string)
Dim (file_number, number)
Dim Comment string
Dim note_changes boolean
dim job_name string
Set (i, 0)
// build job list
JobList( "", job_list )
Concat( job_list, ",*done*", job_list)
//Remove this job from the list
ReplaceAll( job_list, ",1043", "", job_list)
FileOpen( "d:\\temp\\JobUpdate.txt", "LineMode", "Write", "FALSE", file_number )
FileWrite (file_number, "Job IDs for modified jobs.")
FileClose(file_number)
//Testing
Set (job_list, "1007,*done*")
// parse the list
isEqual( job_list, "", no_more )
LoopUntil( no_more, END_LOOP )
Set ( job_script_ori, "")
Set ( job_script, "")
Set ( job_script_msg_ori, "")
Set ( job_script_ori, "")
Set ( job_script_msg_code, "")
Set ( job_script_msg_code_ori, "")
// get next job ID
GetToken(",", job_list, job_id )
JobDescribe( job_id, "NAME", job_name)
// get job script
JobDescribe( job_id, "SCRIPT", job_script )
Set (job_script_ori, job_script)
//Script 24x7TOWER Update
ReplaceAll( job_script, "24x7tower.com", "24x7sc.net ", job_script)
//Script 24x7SC Update
ReplaceAll( job_script, "24x7sc.com", "24x7sc.net ", job_script)
isEqual (job_script_ori, job_script, script_changes)
//***********************************
//Script 24x7SC Update - TESTING
// ReplaceAll( job_script, "24x7sc.net", "24x7sc.com ", job_script)
// isEqual (job_script_ori, job_script, script_changes)
//***********************************
//Get Recipient List
JobDescribe( job_id, "MSG_RECIPIENT", job_script_msg )
Set (job_script_msg_ori, job_script_msg)
//Email 24x7TOWER Recipients Update
ReplaceAll( job_script_msg, "24x7tower.com", "24x7sc.net ", job_script_msg)
//Email 24x7SC Recipients Update
ReplaceAll( job_script_msg, "24x7sc.com", "24x7sc.net ", job_script_msg)
isEqual (job_script_msg_ori, job_script_msg, msg_changes)
//***********************************
//Script 24x7SC Update - TESTING
// ReplaceAll( job_script_msg, "24x7sc.com", "24x7sc.net ", job_script_msg)
// isEqual (job_script_msg_ori, job_script_msg, msg_changes)
//***********************************
//Get Script Notification List
JobDescribe( job_id, "MSG_SCRIPT_CODE", job_script_msg_code )
Set (job_script_msg_code_ori, job_script_msg_code)
//Email 24x7TOWER Recipients Update
ReplaceAll( job_script_msg_code, "24x7tower.com", "24x7sc.net ", job_script_msg_code)
//Email 24x7SC Recipients Update
ReplaceAll( job_script_msg_code, "24x7sc.com", "24x7sc.net ", job_script_msg_code)
isEqual (job_script_msg_code_ori, job_script_msg_code, note_changes)
If (script_changes, Update_Recip, Update_Script)
Update_Script:
JobModify( job_id, "SCRIPT", job_script )
FileOpen( "d:\\temp\\JobUpdate.txt", "LineMode", "Write", "TRUE", file_number )
ConcatEx ("SCRIPT Update: \"", job_name, "\" - ", job_id, comment)
FileWrite (file_number, comment)
FileClose(file_number)
Add( i, 1, i )
Update_Recip:
If (msg_changes, Update_Script_Note, process_Recip)
process_Recip:
JobModify( job_id, "MSG_RECIPIENT", job_script_msg )
FileOpen( "d:\\temp\\JobUpdate.txt", "LineMode", "Write", "TRUE", file_number )
ConcatEx ("MSG_RECIPIENT Update: \"", job_name, "\" - ", job_id, comment)
FileWrite (file_number, comment)
FileClose(file_number)
Add( i, 1, i )
Update_Script_Note:
If (note_changes, Next, process_Script_Note)
process_Script_Note:
// JobModify( job_id, "MSG_SCRIPT_CODE", job_script_msg_code )
FileOpen( "d:\\temp\\JobUpdate.txt", "LineMode", "Write", "TRUE", file_number )
ConcatEx ("MSG_SCRIPT_CODE Update: \"", job_name, "\" - ", job_id, comment)
FileWrite (file_number, comment)
FileClose(file_number)
Add( i, 1, i )
Next:
isEqual( job_list, "*done*", no_more )
END_LOOP:
string (i,result)
concatex ( result , " jobs updated.", result)
FileOpen( "d:\\temp\\JobUpdate.txt", "LineMode", "Write", "TRUE", file_number )
FileWrite (file_number, result)
FileClose(file_number)
// messagebox(result)
|
|
Mon Aug 18, 2008 1:38 pm |
|
|
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7903
|
|
|
|
Please post one of your sample jobs so we can take your script and reproduce this issue. If necessary, before posting replace sensitive information with some dummy data.
|
|
Mon Aug 18, 2008 1:40 pm |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|