Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » CMD/BAT - [решено] Определение IP и запись в файл

Ответить
Настройки темы
CMD/BAT - [решено] Определение IP и запись в файл

Аватара для aggressor_

Пользователь


Сообщения: 101
Благодарности: 3


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте!
Выбрал cmd/bat, но это особой роли не играет, подойдёт любой способ.
Нужно записывать ip адрес в файл..
Если возможно, проверять на совпадения с предыдущими подключениями и при совпадении как-то демонстрировать это, будь то звук или табличка какая.
Смысл в том, чтобы каждый раз не заходить на 2ip, копировать адрес и проверять на совпадение вручную, а как-то автоматизировать этот процесс.

Отправлено: 23:37, 26-02-2012

 

Аватара для aggressor_

Пользователь


Сообщения: 101
Благодарности: 3

Профиль | Отправить PM | Цитировать


Спасибо!

Отправлено: 01:01, 28-02-2012 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для aggressor_

Пользователь


Сообщения: 101
Благодарности: 3

Профиль | Отправить PM | Цитировать


Я немного изменил MsgBox и получилось следующее
Код: Выделить весь код
If boolIPExists Then
		MsgBox "IP [" & strIP & "] уже существует!"& Chr(13) & "Последний добавленный IP [last ip]", vbOKOnly + vbExclamation, "Такой IP уже существует!"
	Else
Хотел бы узнать, возможно ли вывести на месте last ip последний добавленный Ip в текстовый файл?
И ещё вопрос, правильно использовать для переноса строки & Chr(13) & или же нужно & Chr(10) & или это вообще не принципиально?

Отправлено: 06:10, 28-02-2012 | #12


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата aggressor_:
Хотел бы узнать, возможно ли вывести на месте last ip последний добавленный Ip в текстовый файл? »
Возможно, но надо поменять логику работы скрипта, чтобы происходило чтение всего текстового файла.

Потому я повторюсь: какова будет планируемая «глубина» списка? Т.е., каков может быть его максимальный размер в строках (это нужно знать для того, какую модель чтения выбрать для решения озвученной Вами в предыдущем посту задачи — так же, построчно, или весь файл целиком в память)?

Цитата aggressor_:
И ещё вопрос, правильно использовать для переноса строки & Chr(13) & или же нужно & Chr(10) & или это вообще не принципиально? »
Обычно манипулируют просто константами «vbCr», «vbLf» и «vbCrLf», в данном случае разница несущественна:
Код: Выделить весь код
MsgBox "Мама мыла раму." & vbCrLf & "Рабы не мы," & vbCr & "Мы не рабы." & vbLf & "Hello World!"
а обычно в Windows используют пару символов конца строк «vbCrLf».
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:52, 28-02-2012 | #13


Аватара для aggressor_

Пользователь


Сообщения: 101
Благодарности: 3

Профиль | Отправить PM | Цитировать


Мне уже неловко Вас просить.

Поработав день со скриптом, хотелось бы внести некоторые изменения.

При повторении ip хотелось бы видеть MsgBox следующего типа:
Данный ip [111.11.11.11] уже был добавлен в список [01.01.2011 - 18ч:30мин]
Последний добавленный ip [222.222.22.22] [21.02.2012 - 15ч:45мин]

При внесении нового ip:
IP [333.33.33.33] добавлен в список
Последний добавленный ip [222.222.22.22] [21.02.2012 - 15ч:45мин]

Список ip в txt файле тоже хотелось бы немного видоизменить. Рядом с Ip проставлять дату и время, напр
222.222.22.22 [21.02.2012 - 15ч:45мин]

Был бы Вам очень благодарен, если бы Вы смогли это реализовать...
Цитата Iska:
какова будет планируемая «глубина» списка? Т.е., каков может быть его максимальный размер в строках (это нужно знать для того, какую модель чтения выбрать для решения озвученной Вами в предыдущем посту задачи — так же, построчно, или весь файл целиком в память)? »
Максимальный размер не ограничен, хоть 1000, хоть 5000 строк. При необходимости, я просто перемещу txt файл и всё пойдёт заново

Отправлено: 06:32, 29-02-2012 | #14


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата aggressor_:
Максимальный размер не ограничен, хоть 1000, хоть 5000 строк. При необходимости, я просто перемещу txt файл и всё пойдёт заново »
Спасибо, ясно.

Примерно так:
Код: Выделить весь код
Option Explicit

Const adOpenStatic     = 3
Const adLockOptimistic = 3
Const adCmdText        = 1

Dim objConnection
Dim objRecordset

Dim strPath2DB
Dim strTable

Dim strIP
Dim strLastIP
Dim strPreviousIPs


strPath2DB         = WScript.CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) & "\"
strTable           = Replace("PreviousIPList.txt", ".", "#")

Set objConnection  = WScript.CreateObject("ADODB.Connection")
Set objRecordSet   = WScript.CreateObject("ADODB.Recordset")

objConnection.Open _
	"Provider=Microsoft.Jet.OLEDB.4.0;" & _
	"Data Source=" & strPath2DB & ";" & _
	"Extended Properties=""text;HDR=YES;FMT=CSVDelimited"""

SetTable strTable, objConnection

strIP = GetIP()

With objRecordset
	.Open "SELECT TOP 1 * FROM " & strTable & " ORDER BY DateTime DESC", _
		objConnection, adOpenStatic, adLockOptimistic, adCmdText
		
	If .RecordCount > 0 Then
		strLastIP = .Fields.Item("DateTime").Value & vbTab & .Fields.Item("IP").Value
	Else
		strLastIP = "[Отсутствует]"
	End If
	
	.Close
	
	.Open "SELECT * FROM " & strTable & " WHERE IP = '" & strIP & "'", _
		objConnection, adOpenStatic, adLockOptimistic, adCmdText
	
	If .RecordCount > 0 Then
		strPreviousIPs = ""
		
		Do Until .EOF
			strPreviousIPs = strPreviousIPs & .Fields.Item("DateTime").Value & vbTab & .Fields.Item("IP").Value & vbCrLf
			
			.MoveNext
		Loop
		
		MsgBox "Данный IP адрес [" & strIP & "] уже был ранее добавлен в список:" & vbCrLf & strPreviousIPs & vbCrLf & _
			"Последний добавленный IP адрес:" & vbCrLf & strLastIP, vbOKOnly + vbExclamation, "IP адрес [" & strIP & "] уже существует"
	Else
		objRecordset.AddNew Array("DateTime", "IP"), Array(Now(), strIP)
		
		MsgBox "IP адрес [" & strIP & "] добавлен в список." & vbCrLf & vbCrLf & _
			"Последний добавленный IP адрес:" & vbCrLf & strLastIP, vbOKOnly + vbExclamation, "IP адрес [" & strIP & "] добавлен"
	End If
	
	.Close
End With

objConnection.Close

Set objRecordset  = Nothing
Set objConnection = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Function GetIP()
	With WScript.CreateObject("Microsoft.XMLHTTP")
		.open "GET", "http://ifconfig.me/ip", False
		.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
		.send
		
		GetIP = Replace(.responseText, vbLf, "")
	End With
End Function
'=============================================================================

'=============================================================================
Sub SetTable(strTable, objConnection)
	Const adDate  = 7
	Const adWChar = 130
	
	Dim boolTableExists
	
	Dim objCatalog
	Dim objTable
	
	
	boolTableExists = False
	
	Set objCatalog = WScript.CreateObject("ADOX.Catalog")
	Set objCatalog.ActiveConnection = objConnection
	
	For Each objTable In objCatalog.Tables
		If objTable.Name = strTable Then
			boolTableExists = True
			
			Exit For
		End If
	Next
	
	If Not boolTableExists Then
		Set objTable = WScript.CreateObject("ADOX.Table")
		
		objTable.Name = strTable
		
		objTable.Columns.Append "DateTime", adDate
		objTable.Columns.Append "IP", adWChar
		
		objCatalog.Tables.Append objTable
	End If
	
	Set objTable   = Nothing
	Set objCatalog = Nothing
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:02, 29-02-2012 | #15


Аватара для aggressor_

Пользователь


Сообщения: 101
Благодарности: 3

Профиль | Отправить PM | Цитировать


Большое спасибо!!!
Всё отлично работает!

Отправлено: 10:25, 29-02-2012 | #16

ul9 ul9 вне форума

Пользователь


Сообщения: 122
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, подскажите пожалуйста, а как запустить этот vbs на windows 7 x64? Постоянно выскакивает ошибка...

Отправлено: 05:01, 01-01-2013 | #17


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата ul9:
Постоянно выскакивает ошибка... »
ul9, в диалоговом окне с сообщением об ошибке нажмите «Ctrl-C». Вставьте полученный текст сообщения об ошибке из буфера обмена сюда, обрамив его тэгом [code].

Отправлено: 17:54, 01-01-2013 | #18

ul9 ul9 вне форума

Пользователь


Сообщения: 122
Благодарности: 0

Профиль | Отправить PM | Цитировать


Перегнала скрипт в ехе и всё заработало, чудеса.
А ошибка вот такая была
Код: Выделить весь код
---------------------------
Windows Script Host
---------------------------
Сценарий:	test.vbs
Строка:	32
Символ:	1
Ошибка:	Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Код:	800A0E7A
Источник: 	ADODB.Connection

---------------------------

Отправлено: 20:09, 01-01-2013 | #19


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата ul9:
Перегнала скрипт в ехе и всё заработало, чудеса. »
Весьма странно.

Цитата ul9:
А ошибка вот такая была »
Не представляю, в чём может быть дело. Составляющие MDAC той или иной версий входят в комплект поставки ОС уже очень давно.

Отправлено: 02:49, 02-01-2013 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » CMD/BAT - [решено] Определение IP и запись в файл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Определение и запись в boot.ini пути XP tupica Скриптовые языки администрирования Windows 0 03-02-2011 16:42
Assm - [решено] Запись в файл pogo Программирование и базы данных 7 24-11-2010 09:15
C/C++ - [решено] запись в файл Viruss Программирование и базы данных 3 05-08-2010 18:27
CMD/BAT - [решено] определение оборудования из коммандной строки и запись в отчета файл RedX Скриптовые языки администрирования Windows 3 14-07-2010 09:33
запись в файл на Perl koresaram Вебмастеру 3 16-03-2006 13:46




 
Переход