Hallo allemaal,
Wegens verkeerd plaatsen en verkeerde omschrijving bij deze nogmaals.
Ik heb een probleem betreft mijn java source die uitgevoerd wordt door een .sh script. Mijn java source compiled zonder fouten en werkt ook gewoon prima als ik arguments zonder spatie ingeef. Op het moment dat ik een spatie gebruik in een argument dan lijkt er iets fout te gaan.
Belangrijke delen uit mijn java source:
Waar ik naar kijk in mijn java source is naar de run_status uit de MSSQL database voor argument 3.
Mijn java source returned dit weer naar het .sh script en die geeft de output weer in groundworks(monitoring systeem waar dit script voor gemaakt is). Op het moment dat een van deze 2 waardes niet returned worden naar het .sh script geeft die een status Unknown weer om aan te geven dat er iets fout zit met het script of met de MSSQL job. In dit geval ligt het aan het script, omdat als ik argument 3(de jobnaam van de mssql server) opgeef zonder whitespaces alles prima werkt.
Wat heb ik geprobeerd om het probleem op te lossen?
Ik voer mijn script op de volgende manier uit:
check_sqljob.sh -H <hostname> -u <username> -p <password> <jobname>
het .sh script verwerkt de arguments op de volgende manier:
$javacmd(/usr/java/jdk1.6.0_22/bin/java) SqlJobMon.class $2(hostname) $4(username) $6(password) $7(jobname)
Om de jobname met spaties in een argument te stoppen heb ik al op internet gelezen dat je gebruik moet maken van " " dubbele quotes om de jobname. Dit helpt inderdaad op het moment dat ik de arguments echo zie ik inderdaad dat de jobname netjes met spaties in een argument wordt weergegeven. Maar toch blijft die als ik met spaties werk de status van de job Unknown aangeven terwijl als ik de spaties van de job verwijder in mijn testdatabase hij wel gewoon werkt.
Wie o wie kan mij helpen? Zou het misschien een shell probleem kunnen zijn? De orginele java source komt van internet en was bedoeld om ALLE jobs van een mssql server te monitoren terwijl ik dit wil specificeren. De source heeft dus enkele rewrites ondergaan en dit is de enigste issue waar ik tegen aanloop en zelf geen oplossing meer voor weet.
//Edit:
Link naar java source: *snip*
Link naar .sh script: *snip*
Nogmaals, we gaan geen hele scripts van 200+ regels voor je debuggen. Post relevante informatie; mocht er meer nodig zijn dan vragen we daar wel om:
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
Wegens verkeerd plaatsen en verkeerde omschrijving bij deze nogmaals.
Ik heb een probleem betreft mijn java source die uitgevoerd wordt door een .sh script. Mijn java source compiled zonder fouten en werkt ook gewoon prima als ik arguments zonder spatie ingeef. Op het moment dat ik een spatie gebruik in een argument dan lijkt er iets fout te gaan.
Belangrijke delen uit mijn java source:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
| public static void main(String[] args) { //Vangt arguments op die verstuurd zijn met het .sh script String sqlRecent = "select top 1 sj.name, sjh.step_name, sjh.run_date, sjh.run_time, sjh.run_status, sjh.message, sjh.server " + "from msdb.dbo.sysjobhistory sjh inner join msdb.dbo.sysjobs sj on sjh.job_id = sj.job_id " + "inner join msdb.dbo.sysjobsteps sjs on sj.job_id = sjs.job_id and sjh.step_id = sjs.step_id " + "and sj.name ='" + args[3] + "'" + "and sjh.run_date ='" + datequery + "'" + "ORDER BY run_time DESC"; stmt = null; stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rsRecent = stmt.executeQuery(sqlRecent); // Argument 3 wordt toegepast, het argument met de whitespace erin. |
Waar ik naar kijk in mijn java source is naar de run_status uit de MSSQL database voor argument 3.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
| while (rsRecent.next()) { if (rsRecent.getString("run_status").equals("0")){ System.out.print("<a href=" + link + "/" + args[0] + "-" + datetime + ".html target=main>"); System.out.print(" CRITICAL: Job Failed" ); System.out.print("</a>\n"); } else { if (rsRecent.getString("run_status").equals("1")){ System.out.print("<a href=" + link + "/" + args[0] + "-" + datetime + ".html target=main>"); System.out.print(" OK: Nothing Failed"); System.out.print("</a>\n"); System.out.flush(); |
Mijn java source returned dit weer naar het .sh script en die geeft de output weer in groundworks(monitoring systeem waar dit script voor gemaakt is). Op het moment dat een van deze 2 waardes niet returned worden naar het .sh script geeft die een status Unknown weer om aan te geven dat er iets fout zit met het script of met de MSSQL job. In dit geval ligt het aan het script, omdat als ik argument 3(de jobnaam van de mssql server) opgeef zonder whitespaces alles prima werkt.
Wat heb ik geprobeerd om het probleem op te lossen?
Ik voer mijn script op de volgende manier uit:
check_sqljob.sh -H <hostname> -u <username> -p <password> <jobname>
het .sh script verwerkt de arguments op de volgende manier:
$javacmd(/usr/java/jdk1.6.0_22/bin/java) SqlJobMon.class $2(hostname) $4(username) $6(password) $7(jobname)
Om de jobname met spaties in een argument te stoppen heb ik al op internet gelezen dat je gebruik moet maken van " " dubbele quotes om de jobname. Dit helpt inderdaad op het moment dat ik de arguments echo zie ik inderdaad dat de jobname netjes met spaties in een argument wordt weergegeven. Maar toch blijft die als ik met spaties werk de status van de job Unknown aangeven terwijl als ik de spaties van de job verwijder in mijn testdatabase hij wel gewoon werkt.
Wie o wie kan mij helpen? Zou het misschien een shell probleem kunnen zijn? De orginele java source komt van internet en was bedoeld om ALLE jobs van een mssql server te monitoren terwijl ik dit wil specificeren. De source heeft dus enkele rewrites ondergaan en dit is de enigste issue waar ik tegen aanloop en zelf geen oplossing meer voor weet.
//Edit:
Link naar java source: *snip*
Link naar .sh script: *snip*
Nogmaals, we gaan geen hele scripts van 200+ regels voor je debuggen. Post relevante informatie; mocht er meer nodig zijn dan vragen we daar wel om:
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
[ Voor 4% gewijzigd door RobIII op 19-11-2010 10:44 ]