powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / VBS скрипт для проверки доступности БД
6 сообщений из 6, страница 1 из 1
VBS скрипт для проверки доступности БД
    #37024616
ораглист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге получилось так:
Код: 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
VBS скрипт для проверки доступности БД
    #37024627
ораглист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
VBS скрипт для проверки доступности БД
    #37024948
ораглист,
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
VBS скрипт для проверки доступности БД
    #37025283
Crazy_Driver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ораглист,

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

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


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