|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » CMD/BAT - [решено] Определение IP и запись в файл |
|
CMD/BAT - [решено] Определение IP и запись в файл
|
![]() Пользователь Сообщения: 101 |
Здравствуйте!
Выбрал cmd/bat, но это особой роли не играет, подойдёт любой способ. Нужно записывать ip адрес в файл.. Если возможно, проверять на совпадения с предыдущими подключениями и при совпадении как-то демонстрировать это, будь то звук или табличка какая. Смысл в том, чтобы каждый раз не заходить на 2ip, копировать адрес и проверять на совпадение вручную, а как-то автоматизировать этот процесс. |
|
Отправлено: 23:37, 26-02-2012 |
![]() Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Спасибо!
|
Отправлено: 01:01, 28-02-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Я немного изменил MsgBox и получилось следующее
If boolIPExists Then MsgBox "IP [" & strIP & "] уже существует!"& Chr(13) & "Последний добавленный IP [last ip]", vbOKOnly + vbExclamation, "Такой IP уже существует!" Else И ещё вопрос, правильно использовать для переноса строки & Chr(13) & или же нужно & Chr(10) & или это вообще не принципиально? |
Отправлено: 06:10, 28-02-2012 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата aggressor_:
Потому я повторюсь: какова будет планируемая «глубина» списка? Т.е., каков может быть его максимальный размер в строках (это нужно знать для того, какую модель чтения выбрать для решения озвученной Вами в предыдущем посту задачи — так же, построчно, или весь файл целиком в память)? Цитата aggressor_:
а обычно в Windows используют пару символов конца строк «vbCrLf». |
||
Отправлено: 08:52, 28-02-2012 | #13 |
![]() Пользователь Сообщения: 101
|
Профиль | Отправить 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:
|
|
Отправлено: 06:32, 29-02-2012 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата aggressor_:
Примерно так: 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 |
![]() Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Большое спасибо!!!
Всё отлично работает! |
Отправлено: 10:25, 29-02-2012 | #16 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Iska, подскажите пожалуйста, а как запустить этот vbs на windows 7 x64? Постоянно выскакивает ошибка...
|
Отправлено: 05:01, 01-01-2013 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:54, 01-01-2013 | #18 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Перегнала скрипт в ехе и всё заработало, чудеса.
А ошибка вот такая была |
Отправлено: 20:09, 01-01-2013 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 02:49, 02-01-2013 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|