Простая замена для Xp_cmdshell

  • Автор темы alex2345
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

alex2345

#1
Простая замена для xp_cmdshell
С возможностью раздачи прав на доступ.
Код:
declare @iShl int, @iStm int, @iStdOut int, @iLine int, @hr int, @EndOfStream int,
@strText nvarchar(4000), @cmd nvarchar(4000)
set @cmd = 'Exec("cmd /c ping -n 3 -w 1000 www.ru")'
EXEC @hr = sp_OACreate 'Wscript.Shell', @iShl OUT
EXEC @hr = sp_OAMethod @iShl, @cmd, @iStm out
EXEC @hr = sp_OAGetProperty @iStm, 'StdOut', @iStdOut out
EXEC @hr = sp_OAGetProperty @iStdOut, 'AtEndOfStream', @EndOfStream out
WHILE @EndOfStream = 0 BEGIN
EXEC @hr = sp_OAGetProperty @iStdOut, 'ReadLine', @strText out
print @strText
EXEC @hr = sp_OAGetProperty @iStdOut, 'AtEndOfStream', @EndOfStream out
END
EXEC @hr = sp_OADestroy @iShl
 
A

alex2345

#3
Sorry,
тестировал на SQL 2000. Там всё работает без дополнительных настроек.

В SQL 2005 нужно выполнить:

Код:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
 
A

alex2345

#4
analogue xp_cmdshell
замена для xp_cmdshell
---------------------------------------------------------------------
Windows 2000: need Windows Script 5.6 for Windows XP and Windows 2000
Windows 2003: included
---------------------------------------------------------------------
MSSQL2000 :
nothing, Ole Automation Procedures enabled

MSSQL2005 :
Код:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

MSSQL2008 :
[url=http://msdn2.microsoft.com/en-us/library/ms191188(SQL.100).aspx]http://msdn2.microsoft.com/en-us/library/m...8(SQL.100).aspx[/url]
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
---------------------------------------------------------------------
declare @iShl int, @iStm int, @iStdOut int, @hr int, @EndOfStream int, 
@strText nvarchar(4000), @cmd nvarchar(4000)
set @cmd = 'Exec("cmd /c ping -n 3 -w 1000 127.0.0.1")'

EXEC @hr = sp_OACreate 'Wscript.Shell', @iShl out
EXEC @hr = sp_OAMethod @iShl, @cmd, @iStm out
EXEC @hr = sp_OAGetProperty @iStm, 'StdOut', @iStdOut out
EXEC @hr = sp_OAGetProperty @iStdOut, 'AtEndOfStream', @EndOfStream out
WHILE @EndOfStream = 0 BEGIN
EXEC @hr = sp_OAGetProperty @iStdOut, 'ReadLine', @strText out
print @strText
EXEC @hr = sp_OAGetProperty @iStdOut, 'AtEndOfStream', @EndOfStream out
END
EXEC @hr = sp_OADestroy @iShl
---------------------------------------------------------------------
Keywords: xp_cmdshell, faq, howto, problem, error, alternative, command line, cmd
проблема, как обойти, ошибка
---------------------------------------------------------------------

Модератор:Не забывайте про оформление поста!
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#5
Первый бот прорвался через защиту! Хреново.. Не у всех людей получается, а тут бот смог.. мда.
 
Статус
Закрыто для дальнейших ответов.