Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.173.48.18] |
|
Страницы: (22) « Первая ... 15 16 [17] 18 19 ... 21 22 ( Перейти к последнему сообщению ) |
Сообщ.
#241
,
|
|
|
Цитата Akina Теперь ясно чего я не понимал)) Я не понимал как сделать strSubnetMask = objNetAdapter.IPSubnet! Ну и про "and DHCPEnabled=TRUE" я также недодумался! Akina Моск! Спасибо Вам! Добавлено Цитата strIPAddress = Array("192.168.0.3") Ув. Akina А можно сделать чтобы адрес менялся не полностью (192.168.0.3) а 192.168.xхх.211, т.е. чтобы предпоследний октет скрипт генерировал в соответствии с тем, как настроена ЛВС? (или чтобы скрипт брал текущий ip и менял только его последний октет (т.е. менял 192.168.0.ХХХ)_) |
Сообщ.
#242
,
|
|
|
А в чём проблема? не можете найти справку по строковым функциям в VBScript?
http://msdn.microsoft.com/en-us/library/3ca8tfek(VS.85).aspx |
Сообщ.
#243
,
|
|
|
Цитата А в чём проблема? Проблема в знаниях Благодаря Вам нашел справку, нашел такое решение: sip = getip() ifirstdot = instr(0,sip,".") iseconddot = instr(ifirstdot+1,sip,".") ithirddot = instr(iseconddot+1,sip,".") strirdoctet = mid(sip, iseconddot+1, _ Len(sip)-ithirddot) Function getip() set myobj = getobject("winmgmts:{impersonationlevel=" & "impersonate}") "!//localhost".execquery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") for each ipadress in myobj if ipaddress.ipaddress(0) <> "0.0.0.0" then localip = ipaddress.ipaddress(0) exit for end if next getip = localip end function Эм, оно "нерабочее" в моменте присвоения Myobj = getobj, немогу понять что не так? Будте любезны, если сможете решить мою проблему, запостите код пожалуйста.. ( по строковым ф-циям почему например при dim a & a = array(192,168,0,191) & b = a(4) & msgbox b в ответ приходит ошибка? ..) |
Сообщ.
#244
,
|
|
|
Вместо использования instr посмотрите описания функций Split и Join.
Цитата Alexsz @ немогу понять что не так? Ошибка синтаксиса. Цитата Alexsz @ по строковым ф-циям почему например при dim a & a = array(192,168,0,191) & b = a(4) & msgbox b в ответ приходит ошибка? Во-первых, тут нет строковых функций. Во-вторых, все массивы zero-based. Цитата Alexsz @ Проблема в знаниях Ну так изучайте язык, но на более простом материале. |
Сообщ.
#245
,
|
|
|
To Akina
Я пытаюсь понять, на более простом примере у меня все получается, однако именно в этом случае проблемы, благодаря Вам, Akina, я пытаюсь их решить. Получилось следующее: strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE and DHCPEnabled=TRUE") ArrIpAddress = array("192.168.0.3") For Each objNetAdapter in colNetAdapters for each straddress in objnetadapter.ipaddress arroctet = split(straddress, ".") if arroctet(0) = "10" and arroctet(1) = "10" then strnewaddress = "192.168." & arroctets(2) & "." & arroctets(3) arripaddress = array(strnewaddress) strSubnetMask = objNetAdapter.IPSubnet strGateway = objNetAdapter.DefaultIPGateway strGatewayMetric = objNetAdapter.GatewayCostMetric arrDNSServers = objNetAdapter.DNSServerSearchOrder arrEnable = objNetAdapter.EnableStatic(arrIPAddress, strSubnetMask) errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric) objNetAdapter.SetDNSServerSearchOrder(arrDNSServers) End If Next next if err.number<>0 then wscript.echo err.number, err.description err.Clear end if Скрипт отрабатывает без ошибок но не меняет никаких параметров (ip,mask,gtw,dns..) Где я ошибся? Помогите пожалуйста Понять.. |
Сообщ.
#246
,
|
|
|
Еще раз спасибо Akina за то что изначально направил меня в нужное русло!:)
Итоговый рабочий самописный скрипт: strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE and DHCPEnabled=TRUE") For Each objNetAdapter in colNetAdapters For Each strAddress in objNetAdapter.IPAddress arrOctets = Split(strAddress, ".") If arrOctets(0) and arrOctets(1) Then strNewAddress = arroctets(0) & "." & arroctets(1) & "." & arrOctets(2) & "." & "211" arrIPAddress = Array(strNewAddress) strSubnetMask = objNetAdapter.IPSubnet strGateway = objNetAdapter.DefaultIPGateway strGatewayMetric = objNetAdapter.GatewayCostMetric arrDNSServers = objNetAdapter.DNSServerSearchOrder errEnable = objNetAdapter.EnableStatic(arrIPAddress, strSubnetMask) errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric) objNetAdapter.SetDNSServerSearchOrder(arrDNSServers) End If Next Next В конце можно при желании прикрутить ребут машины..) |
Сообщ.
#247
,
|
|
|
Цитата Alexsz @ В конце можно при желании прикрутить ребут машины..) А смысл? достаточно опустить и снова поднять интерфейс - а на ХР и старше так и вовсе ничего не нужно, применяется на лету. Единственный минус такого подхода - не сбрасывается резервирование адреса на DHCP-сервере. Плюс некоторое время висит фантом в НетБИОС-окружении. |
Сообщ.
#248
,
|
|
|
Цитата Akina @ Единственный минус такого подхода - не сбрасывается резервирование адреса на DHCP-сервере. Akina абсолютно прав, и плюс ко всему даже после перезагрузки перезагрузки ИПшник не сброситься, не видел я чтоб сброс кэша DHCP был меньше 15 минут, а обычно неделя или больше. "Сбить" DHCP сервак можно только сменив МАС адрес сетевухи или "вписаться" самому в протокол DHCP и отвергать предложения сервака получить "старый" ИП. |
Сообщ.
#249
,
|
|
|
Цитата AlexJ @ не видел я чтоб сброс кэша DHCP был меньше 15 минут, а обычно неделя или больше Вообще-то это определяется параметром Leased Time самогО DHCP-сервера. |
Сообщ.
#250
,
|
|
|
Цитата Akina @ Вообще-то это определяется параметром Leased Time самогО DHCP-сервера. Ну так о нем и говорю, редко кто ставит меньше 15 минут, а обычно все ставят неделю, после чего кэш DHCP сервака сбрасывается, если не было больше подключений с определенного МАС-адреса. |
Сообщ.
#251
,
|
|
|
Цитата Akina @ Цитата Плюс некоторое время висит фантом в НетБИОС-окружении. Akina А если сбросить командой netsh winsock reset? Тогда этот самый фантом исчезнет? |
Сообщ.
#252
,
|
|
|
Цитата Alexsz @ А если сбросить командой netsh winsock reset? Тогда этот самый фантом исчезнет?) Если сбросить на мастер-браузере и на рабстанции - да. Сообщения были разделены в тему "Скрипт для биллинга" |
Сообщ.
#253
,
|
|
|
Здравствуйте! Имеется следующий скрипт: (выводит свободное дисковое пространтсво)
on Error resume Next stringx = "Локальные диски" & vbNewLine & vbNewLine Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set WSHShell = WScript.CreateObject("WScript.Shell") 'Проверяем все драйвы (HDD, FDD, CDD) в системе For each i In fso.Drives If i.DriveType=1 Then If i<>"A:" Then freef = frit(i) End If End If If i.DriveType=2 Then free=frit(i) stringx= stringx & " На диске " & i & " свободно " & free & " Мб " & vbNewLine End If Next stringx = stringx WSHShell.Popup(stringx) WScript.Quit() function frit(gg) frit = FormatNumber(fso.GetDrive(gg.DriveLetter).FreeSpace/1048576, 1) End function Вопрос: что модифицировать нужно,чтобы скрипт выводил данные в процентах? И как сделать чтобы при превышении определенного порога % свободного пространства скрипт отсылал предупреждающее ( о том что, допустим, на системном диске 0% свободно) сообщение на мыло? |
Сообщ.
#254
,
|
|
|
Цитата Alexsz @ что модифицировать нужно,чтобы скрипт выводил данные в процентах? Получить не только объём свободного пространства (FreeSpace), но и полный объём (TotalSize). Поделить одно на другое. Умножить на 100. Добавить в конце символ "%". Цитата Alexsz @ как сделать чтобы при превышении определенного порога % свободного пространства скрипт отсылал предупреждающее ( о том что, допустим, на системном диске 0% свободно) сообщение на мыло? Задействовать SimpleMAPI. См. "Microsoft Collaboration Data Objects Programmer's Reference" в MSDN. |
Сообщ.
#255
,
|
|
|
Спасибо Akina за совет!
Получилось следующее: Const AlertHigh = .9 Const emailFrom = "xx@xxx.ru" Const emailTo = "xx@xxx.ru" Const MailServer = "mail.xxx.ru" Const WaitTimeInMinutes = 1 Dim strMessage Dim arrServerList arrServerList = array("server name") Do until i = 2 strMessage = "" PollServers(arrServerList) if strMessage <> "" then EmailAlert(strMessage) end if WScript.Sleep(WaitTimeInMinutes*60000) Loop Sub PollServers(arrServers) on error resume next for each Server in arrServers set objSvc = GetObject("winmgmts:{impersonationLevel=impersonate}//" & Server & "/root/cimv2") set objRet = objSvc.InstancesOf("win32_LogicalDisk") for each item in objRet if item.DriveType = 7 then end if if item.FreeSpace/item.size <= AlertHigh then strMessage = strMessage & UCase(Server) & ": Alert, drive '" & item.caption & "' is low on HDD space! There are " & FormatNumber((item.FreeSpace/1024000),0) & " MB free <7%" & vbCRLF end if next next set objSvc = Nothing set objRet = Nothing End Sub Sub EmailAlert(Message) on error resume next Set objMessage = CreateObject("CDO.Message") with objMessage .From = emailFrom .To = emailTo .Subject = "Low Disk Space Update" .TextBody = Message .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = MailServer .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxx" .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxx" .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 .Configuration.Fields.Update .Send end with Set objMessage = Nothing End Sub Подскажите пожалуйста, как написать скрипт, который содавал бы файл и постоянно записывал туда текстовую информацию (вообще не важно какую), главное чтобы скрипт записывал инфу постоянно, тем самым увеличивая (постоянно) размер файла..? (нужно для того чтобы протестировать данный скрипт) |