Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / VBS скрипт для проверки доступности БД / 6 сообщений из 6, страница 1 из 1
20.12.2010, 13:53
    #37024616
ораглист
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS скрипт для проверки доступности БД
В итоге получилось так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Set Args = WScript.Arguments

Set objShell = CreateObject("Wscript.Shell")
strCommand = "C:\oracle\product\10.2.0\db_1\BIN\sqlplus -L user/pass@192.168.1.2:1521/bd"
set objProc = objShell.Exec(strCommand)

input = ""
strOutput = ""
Do While Not objProc.StdOut.AtEndOfStream
	input = objProc.StdOut.ReadLine
	If InStr(input, "Unable to connect to Oracle") Then
	 	Err =  2 
		Status = "CRITICAL"
		Wscript.Echo "Oracle Service: Error;"
	ElseIf InStr(input, "Connected to") Then
	 	Err =  0 
		Status = "OK"
		Wscript.Echo "Oracle Service: Connected"
	Else	
		Err =  3 
		Status = "Unknown"
		Wscript.Echo "Oracle Service: Unknown"
	End If
Loop

Wscript.Quit(Err)

Но цикл не отрабатывает, т.к. не отрабатывает strCommand = "C:\oracle\product\10.2.0\db_1\BIN\sqlplus -L user/pass@192.168.1.2:1521/bd"
В то же время strCommand = "ping 192.168.1.2" или tracert нормально работают и скрипт получает строки оттуда.

Если просто запустить в CMD C:\oracle\product\10.2.0\db_1\BIN\sqlplus -L user/pass@192.168.1.2:1521/bd , то получаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
SQL*Plus: Release  10 . 2 . 0 . 4 . 0  - Production on Mon Dec  20   16 : 50 : 40   2010 

Copyright (c)  1982 ,  2007 , Oracle.  All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release  10 . 2 . 0 . 4 . 0  - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
...
Рейтинг: 0 / 0
20.12.2010, 13:58
    #37024627
ораглист
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS скрипт для проверки доступности БД
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Oracle Service: Unknown
Pinging  10 . 9 . 41 . 101  with  32  bytes of data:
Oracle Service: Unknown
Reply from  10 . 9 . 41 . 101 : bytes= 32  time<1ms TTL= 128 
Oracle Service: Error;
Reply from  10 . 9 . 41 . 101 : bytes= 32  time<1ms TTL= 128 
Oracle Service: Error;
Reply from  10 . 9 . 41 . 101 : bytes= 32  time<1ms TTL= 128 
Oracle Service: Error;
Reply from  10 . 9 . 41 . 101 : bytes= 32  time<1ms TTL= 128 
Oracle Service: Error;
Ping statistics for  10 . 9 . 41 . 101 :
Oracle Service: Unknown
Packets: Sent =  4 , Received =  4 , Lost =  0  ( 0 % loss),
Oracle Service: Unknown
Approximate round trip times in milli-seconds:
Oracle Service: Unknown
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Oracle Service: Unknown
Вот когда команда ping задана, то после каждой строчки сверяет на нужное слово.
а когда sqlplus, то все строки пустые
...
Рейтинг: 0 / 0
20.12.2010, 15:42
    #37024948
VBS скрипт для проверки доступности БД
ораглист,
sqlplus 8.1.7 .
Работает такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Option Explicit

Dim Args
Dim objShell, objProc
Dim strCommand, input, strOutput
Dim Err, Status

Set Args = WScript.Arguments

Set objShell = CreateObject("Wscript.Shell")
strCommand = "sqlplus /nolog @d:\tmp\script\test_connect.sql"
' содержимое файла d:\tmp\script\test_connect.sql
' conn userid/password@server:port/database
' exit
' 
'-- как вариант - строку подключения указывать в параметрах запуска sqlplus,
'-- а в d:\tmp\script\test_connect.sql оставить только exit
'
Set objProc = objShell.Exec(strCommand)


input = ""
strOutput = ""
Do While Not objProc.StdOut.AtEndOfStream
	input = input & vbCrLf & objProc.StdOut.ReadLine
	'If InStr(input, "Unable to connect to Oracle") Then
	' 	Err = 2
	'	Status = "CRITICAL"
	'	Wscript.Echo "Oracle Service: Error;"
	'ElseIf InStr(input, "Connected to") Then
	' 	Err = 0
	'	Status = "OK"
	'	Wscript.Echo "Oracle Service: Connected"
	'Else	
	'	Err = 3
	'	Status = "Unknown"
	'	Wscript.Echo "Oracle Service: Unknown"
	'End If
Loop

Wscript.Echo input
Wscript.Echo "------------------------------------"

If InStr(input, "Connected.") Then
	Wscript.Echo "Oracle Service: Connected"
ElseIf  1 = 1  Then
	Wscript.Echo "Oracle Service: FAIL to Connect :("
End if

Set objProc = Nothing
Set objShell = Nothing
Set Args = Nothing

Wscript.Quit(Err)
ЗЫ: в 10.2 вывод sqlplus при подлючении пожет несколько отличаться, но принцип тот-же: запустить sqlplus с указанием подключиться к базе и завершить работу.
...
Рейтинг: 0 / 0
20.12.2010, 17:50
    #37025283
Crazy_Driver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS скрипт для проверки доступности БД
ораглист,

Мне думается, что слеши должны быть двойные \\ и @ тоже писать со слешем \@
...
Рейтинг: 0 / 0
20.12.2010, 18:48
    #37025425
VBS скрипт для проверки доступности БД
ОФФ:
Crazy_Driverораглист,
Мне думается, что слеши должны быть двойные \\ и @ тоже писать со слешем \@Чего тут думать, - прыгать надо!(с)
...
Рейтинг: 0 / 0
21.12.2010, 06:39
    #37026062
ораглист
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBS скрипт для проверки доступности БД
пробуй камнем,

Спасибо, так работает.
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / VBS скрипт для проверки доступности БД / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]