Перейти до

Автоматизация сетевых настроек


Рекомендованные сообщения

  Цитата

СУПЕР!!! Ты ведь поделишся этим инсталом ,хотя бы что б посмотреть его в работе? Вообще было б классно исходник ,что б каждый админ мог под свою сетку подправить настройки (если ты конечно согласишся выложить ...) .

 

э.... а где проблема сомому сделать? возьмите любой инсталлятор и наваяйте на нем. по-моему с таким справится любой инсталлятор... еще книженцию по реестру виндовому и в путь!

Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 66
  • Створено
  • Остання відповідь

Top Posters In This Topic

реестр не обязательно можно много сделать через netsh

довольно продвинутая штука под винды

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

Ссылка на сообщение
Поделиться на других сайтах

Довно жду такой задумки. Времени не хвататет тоже осуществить такое. На ХАБЕ видел аналог для создания подключений, прога платная. цену не помню. В принципе за программу такого типа и назначения готов наверно бы заплатить не космические деньги. Я думаю есть смысл кто шарит взятся за это дело, думаю труд ваш оценять.

 

Если потестить надо, то всегда за. На большом количестве абонентов? ЗА! :)

Ссылка на сообщение
Поделиться на других сайтах

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

 

 

я вот думаю как раздуплюсь, я СЕБЕ сделаю что-бы при переустановки винды (уж забыл когда такое было... ;) ) сразу скопом ставить все что нужно, а не сидеть и не парить мозги.

Ссылка на сообщение
Поделиться на других сайтах
  Цитата
Так выделил "СЕБЕ"... Жадина чтоли? ;)))))

не ну ясное дело! ;))

 

просто набор устанавливаемого софта довольно личная штука. это если просто на машину. да и юзерам в сети тоже.

 

http://www.google.com.ua/search?hl=ru&q=ns...B2+Google&meta=

 

вот те линк :) а вообще хоршо-бы не самому это делать. Hamil как я знаю сам проггер так что можете его дружно просить. он справиться :))

Ссылка на сообщение
Поделиться на других сайтах
  .com сказав:
Ну собственно по теме :

С масками ,шлюзами , днс всё в порядке - работает ,

а вот

 

 
REM Прописываем сетевую группу...
net localgroup GROUPBUH /add
REM Прописываем описание сетевой группы...
net localgroup GROUPBUH /comment:"Бухгалтерия"
REM Прописываем пользователя в группу...
net localgroup GROUPBUH VASYA /add

Трабла ,везде пишет команда выполнена успешно. Перезагружаюсь , смотрю группа прежняя.

Запускаю повторно , пишет группа существует, хотя в сетевом её даж нету.

 

PS Что то не замечал где нах-ся описание рабочей группы и что означает прописать пользователя в рабочую группу :bue:

Так никто не знает почему рабочая группа не меняется?

Ссылка на сообщение
Поделиться на других сайтах

REM IP i maska...
netsh interface ip set address name="Simnet" source=static addr=10.7.23.25 mask=255.255.0.0
REM Shluz...
netsh interface ip set address name="Simnet" gateway=10.7.0.128 gwmetric=0
REM DNS1...
netsh interface ip set dns name="Simnet" source=static addr=10.7.0.254 register=PRIMARY
REM DNS2...
netsh interface ip set dns name="Simnet" source=static addr=192.168.0.1 register=2
REM WINS...
netsh interface ip set wins name="Simnet" source=static addr=10.7.0.128

REM Finish...

Вот такой батник есть. Но ни как не выходит сделать, чтоб заполнялась графа Альтернативный DNS-сервер. :tongue:

Подскажите плз :=

Ссылка на сообщение
Поделиться на других сайтах

Интересная тема.

Вот только батником решить все настройки невозможно.

Поэтому, пришлось почитать про VBScript, и вот что вышло в итоге.

Скопировать, вставить где надо свои значения и сохранить с расширением .vbs.

Может есть программер который сможет на базе этого слепить екзешник :)

будет вообще супер.

' Настройка параметров TCP/IP для работы в сети

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes
'================================================
' Прописываем ИП, маску сети, шлюз
strComputer = "."
Dim ip
Dim home
Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
   ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
ip = inputbox ("Введите последнюю цифру Вашего IP адреса (192.168.1.хх)")
strIPAddress = Array("192.168.1."& (ip))
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.222")
strGatewayMetric = Array(1)

For Each objNetAdapter in colNetAdapters
   errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
   errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
   If errEnable = 0 Then
       msgbox ("Ваш IP изменен на: 192.168.1."&ip)
   Else
       WScript.Echo "Ошибка. Введен непопустимый символ"
   End If
Next
'================================================
'Прописываем ДНС
On Error Resume Next
arrNewDNSServerSearchOrder = Array("192.168.1.14", "192.168.1.222")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objNicConfig In colNicConfigs
   If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
   For Each strDNSServer In objNicConfig.DNSServerSearchOrder
Next
 End If
 intSetDNSServers = objNicConfig.SetDNSServerSearchOrder(arrNewDNSServerSearchOrder)
Next
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfigs
 If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
   For Each strDNSServer In objNicConfig.DNSServerSearchOrder
 Next
 End If
Next
'================================================
' Вгоняем комп в рабочую группу (названия групп = номеру дома)
On Error Resume Next

Const JOIN_DOMAIN = 0
home = inputbox ("Введите номер дома")
strDomainName = (home)

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colCompSystems = objWMIService.ExecQuery ("SELECT * FROM Win32_ComputerSystem")
For Each objCompSystem In colCompSystems
 intJoinDomain = objCompSystem.JoinDomainOrWorkgroup(strDomainName,,,, JOIN_DOMAIN)
Next
Set colCompSystems = objWMIService.ExecQuery ("SELECT * FROM Win32_ComputerSystem")
For Each objCompSystem In colCompSystems
Next
'===============================================
'Пишем юзеру сообщение, что все сделано
Dim objShell, intValue 
Set objShell = CreateObject("WScript.Shell") 
intValue = objShell.Popup("Компьтер был добавлен в рабочую группу -" & strDomainName & "." & vbCRLF & "Для продолжения работы необходимо перезагрузить компьтер.", , , vbExclamation + vbOKOnly) 
'===============================================
'Ребутим комп, чтобы активировать рабочую группу
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2") 
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem") 
For Each objOperatingSystem in colOperatingSystems 
ObjOperatingSystem.Reboot() 
Next

P.S: Рабочие группы у меня по номерам домов, ну а вы можете варьировать как вам надо.

Удачи.

Ссылка на сообщение
Поделиться на других сайтах
  gall сказав:
Интересная тема.

Вот только батником решить все настройки невозможно.

Поэтому, пришлось почитать про VBScript, и вот что вышло в итоге.

Скопировать, вставить где надо свои значения и сохранить с расширением .vbs.

Может есть программер который сможет на базе этого слепить екзешник ;)

будет вообще супер.

' Настройка параметров TCP/IP для работы в сети

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes
'================================================
' Прописываем ИП, маску сети, шлюз
strComputer = "."
Dim ip
Dim home
Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
   ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
ip = inputbox ("Введите последнюю цифру Вашего IP адреса (192.168.1.хх)")
strIPAddress = Array("192.168.1."& (ip))
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.222")
strGatewayMetric = Array(1)

For Each objNetAdapter in colNetAdapters
   errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
   errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
   If errEnable = 0 Then
       msgbox ("Ваш IP изменен на: 192.168.1."&ip)
   Else
       WScript.Echo "Ошибка. Введен непопустимый символ"
   End If
Next
'================================================
'Прописываем ДНС
On Error Resume Next
arrNewDNSServerSearchOrder = Array("192.168.1.14", "192.168.1.222")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objNicConfig In colNicConfigs
   If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
   For Each strDNSServer In objNicConfig.DNSServerSearchOrder
Next
 End If
 intSetDNSServers = objNicConfig.SetDNSServerSearchOrder(arrNewDNSServerSearchOrder)
Next
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfigs
 If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
   For Each strDNSServer In objNicConfig.DNSServerSearchOrder
 Next
 End If
Next
'================================================
' Вгоняем комп в рабочую группу (названия групп = номеру дома)
On Error Resume Next

Const JOIN_DOMAIN = 0
home = inputbox ("Введите номер дома")
strDomainName = (home)

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colCompSystems = objWMIService.ExecQuery ("SELECT * FROM Win32_ComputerSystem")
For Each objCompSystem In colCompSystems
 intJoinDomain = objCompSystem.JoinDomainOrWorkgroup(strDomainName,,,, JOIN_DOMAIN)
Next
Set colCompSystems = objWMIService.ExecQuery ("SELECT * FROM Win32_ComputerSystem")
For Each objCompSystem In colCompSystems
Next
'===============================================
'Пишем юзеру сообщение, что все сделано
Dim objShell, intValue 
Set objShell = CreateObject("WScript.Shell") 
intValue = objShell.Popup("Компьтер был добавлен в рабочую группу -" & strDomainName & "." & vbCRLF & "Для продолжения работы необходимо перезагрузить компьтер.", , , vbExclamation + vbOKOnly) 
'===============================================
'Ребутим комп, чтобы активировать рабочую группу
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2") 
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem") 
For Each objOperatingSystem in colOperatingSystems 
ObjOperatingSystem.Reboot() 
Next

P.S: Рабочие группы у меня по номерам домов, ну а вы можете варьировать как вам надо.

Удачи.

Супер,

 

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

 

Вобщем нужно вклинить туда сопоставленные квартиры - айпи

и через после ввода № своей квартиры юзверю забивался бы айпи .

 

Вот правил кусочек ,но не работает. Подскажите как правильно.

 

ip = inputbox ("Введите № вашей квартиры")

ip=kv

If kv=("2") Then ip=("133")

If kv=("4") Then ip=("139")

If kv=("8") Then ip=("114")

 

 

Else

WScript.Echo "Ошибка. Извините,вашей квартиры нет в базе"

End If

Ссылка на сообщение
Поделиться на других сайтах
  .com сказав:

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

 

Вобщем нужно вклинить туда сопоставленные квартиры - айпи

и через после ввода № своей квартиры юзверю забивался бы айпи .

 

Вот правил кусочек ,но не работает. Подскажите как правильно.

 

ip = inputbox ("Введите № вашей квартиры")

ip=kv

If kv=("2") Then ip=("133")

If kv=("4") Then ip=("139")

If kv=("8") Then ip=("114")

 

 

Else

      WScript.Echo "Ошибка. Извините,вашей квартиры нет в базе"

  End If

Попробуй так..

Вроде работает

strComputer = "."
Dim ip
Dim home
Dim kv
Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
   ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
kv = inputbox ("Ввести номер кв")
If kv = ("10") Then 
ip = ("12")
ElseIf kv = ("11") Then 
ip = ("9")
ElseIf kv = ("12") Then 
ip = ("8")
Else
       WScript.Echo "Ошибка"
   End If

Возможно и не самое лучшее решение. ;)

Ссылка на сообщение
Поделиться на других сайтах

ребята, да чего вы паритесь? простейший инсталлятор (NSIS я ща почитываю... просто как 2 байта...) умеет и писать в реестр и выполнять любые проги и командную строку и все что угодно. что еще нужно? нормальный привычный человечный интерфейс, возможность все это дело бесконечно расширять-наращивать-улучшать и это далеко не все чем так вкуен полноценный инсталлятор.

Ссылка на сообщение
Поделиться на других сайтах
  gall сказав:
Интересная тема.

Вот только батником решить все настройки невозможно.

Поэтому, пришлось почитать про VBScript, и вот что вышло в итоге.

Скопировать, вставить где надо свои значения и сохранить с расширением .vbs.

Может есть программер который сможет на базе этого слепить екзешник :)

будет вообще супер.

' Настройка параметров TCP/IP для работы в сети

' Windows Server 2003 : Yes
' Windows XP : Yes
' Windows 2000 : Yes
' Windows NT 4.0 : Yes
' Windows 98 : Yes
'================================================
' Прописываем ИП, маску сети, шлюз
strComputer = "."
Dim ip
Dim home
Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
   ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
ip = inputbox ("Введите последнюю цифру Вашего IP адреса (192.168.1.хх)")
strIPAddress = Array("192.168.1."& (ip))
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.222")
strGatewayMetric = Array(1)

For Each objNetAdapter in colNetAdapters
   errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
   errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
   If errEnable = 0 Then
       msgbox ("Ваш IP изменен на: 192.168.1."&ip)
   Else
       WScript.Echo "Ошибка. Введен непопустимый символ"
   End If
Next
'================================================
'Прописываем ДНС
On Error Resume Next
arrNewDNSServerSearchOrder = Array("192.168.1.14", "192.168.1.222")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objNicConfig In colNicConfigs
   If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
   For Each strDNSServer In objNicConfig.DNSServerSearchOrder
Next
 End If
 intSetDNSServers = objNicConfig.SetDNSServerSearchOrder(arrNewDNSServerSearchOrder)
Next
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfigs
 If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
   For Each strDNSServer In objNicConfig.DNSServerSearchOrder
 Next
 End If
Next
'================================================
' Вгоняем комп в рабочую группу (названия групп = номеру дома)
On Error Resume Next

Const JOIN_DOMAIN = 0
home = inputbox ("Введите номер дома")
strDomainName = (home)

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colCompSystems = objWMIService.ExecQuery ("SELECT * FROM Win32_ComputerSystem")
For Each objCompSystem In colCompSystems
 intJoinDomain = objCompSystem.JoinDomainOrWorkgroup(strDomainName,,,, JOIN_DOMAIN)
Next
Set colCompSystems = objWMIService.ExecQuery ("SELECT * FROM Win32_ComputerSystem")
For Each objCompSystem In colCompSystems
Next
'===============================================
'Пишем юзеру сообщение, что все сделано
Dim objShell, intValue 
Set objShell = CreateObject("WScript.Shell") 
intValue = objShell.Popup("Компьтер был добавлен в рабочую группу -" & strDomainName & "." & vbCRLF & "Для продолжения работы необходимо перезагрузить компьтер.", , , vbExclamation + vbOKOnly) 
'===============================================
'Ребутим комп, чтобы активировать рабочую группу
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2") 
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem") 
For Each objOperatingSystem in colOperatingSystems 
ObjOperatingSystem.Reboot() 
Next

P.S: Рабочие группы у меня по номерам домов, ну а вы можете варьировать как вам надо.

Удачи.

Вылезла трабла у бзверей с несколькими сетевыми картами. Настройки забиваются в каждую из карточек , из-за чего не могут корректно работать протоколы (не доступно ...). Качать из сетки можно ,а чаты и др. не работают.

 

Кто может подсказать какое решение?

Ссылка на сообщение
Поделиться на других сайтах
  frig сказав:
ребята, да чего вы паритесь? простейший инсталлятор (NSIS я ща почитываю... просто как 2 байта...) умеет и писать в реестр и выполнять любые проги и командную строку и все что угодно. что еще нужно? нормальный привычный человечный интерфейс, возможность все это дело бесконечно расширять-наращивать-улучшать и это далеко не все чем так вкуен полноценный инсталлятор.

Если уже прошарился что к чему отпишись поподробнее плыз ,желательно с примером этого NSIS...

Ссылка на сообщение
Поделиться на других сайтах

ой на примеры времени нету, а так все просто. складываешь файлики, пишешь что в реестр записать, и ваяешь скриптик. там все просто. что куда распаковать, какие варианты установки , что ставить, ну и там примочки типа языков и другого. потом делаешь секцию анинсталла, что-бы это дело могло корректно удалиться, и в принципе все. еще есть возможность рисовать свои страницы с полями ввода и остальным. потом это дело можно повпихивать в файлы настройки какой-либо лабуды, которая держит настройки в фалах а не в реестре.... в общем просто нужно немного времени.

Ссылка на сообщение
Поделиться на других сайтах
  frig сказав:
ой на примеры времени нету, а так все просто. складываешь файлики, пишешь что в реестр записать, и ваяешь скриптик. там все просто. что куда распаковать, какие варианты установки , что ставить, ну и там примочки типа языков и другого. потом делаешь секцию анинсталла, что-бы это дело могло корректно удалиться, и в принципе все. еще есть возможность рисовать свои страницы с полями ввода и остальным. потом это дело можно повпихивать в файлы настройки какой-либо лабуды, которая держит настройки в фалах а не в реестре.... в общем просто нужно немного времени.

Теперь понял что имелось ввиду... Сенкс

Трабла с настройкой всех (вместо 1го) сетевых интефейсов ещё актульна ... (

Ссылка на сообщение
Поделиться на других сайтах

одно время пытался написать такое на Делфи, загвоздка стала в том что не смог определить имена ВСЕХ интерфейсов на машине... если кто подскажет как это определить, выдам на гора софт автонастроечный вместе с исходниками...

Ссылка на сообщение
Поделиться на других сайтах
  • 2 weeks later...

Взял за основу скрипт gall и немножко переделал.

 

Получился скрипт на perl

#!/usr/bin/perl

($cgi_script) = ($0 =~ m:(.*)[/\\](.*)[1];
$ip = $ENV{'REMOTE_ADDR'};
$url = 'http://' . $ENV{'HTTP_HOST'} . $ENV{'REQUEST_URI'};
$debug = 0;

$addr{'192.168.0.0/24'} = 'one';
$addr{'55.22.207.66'} = 'two';
$addr{'55.22.200.19'} = 'three';

$settings{one}[0] = $ip;
$settings{one}[1] = '255.255.255.0';
$settings{one}[2] = '192.168.0.129';
$settings{one}[3] = '172.16.2.126';

$settings{two}[0] = '';
$settings{two}[1] = '255.255.255.0';
$settings{two}[2] = '192.168.4.129';
$settings{two}[3] = '192.168.4.129';

$settings{three}[0] = '';
$settings{three}[1] = '255.255.255.0';
$settings{three}[2] = '192.168.3.129';
$settings{three}[3] = '192.168.3.129';

$settings{amn}[0] = '';
$settings{amn}[1] = '255.255.255.0';
$settings{amn}[2] = '194.58.162.129';
$settings{amn}[3] = '194.58.162.129';

if($ENV{'REQUEST_METHOD'} eq 'POST') {read STDIN, $query, $ENV{'CONTENT_LENGTH'};}
else {$query = $ENV{'QUERY_STRING'};}

if($query eq '')
{

foreach $net (keys %addr)
{
 ($op, $mask) = split/\//, $net;
 $mask = 32 if ($mask eq '');
 $pop = unpack "L", pack "C4", split /\./, $op;
 $pip = unpack "L", pack "C4", split /\./, $ip;
 $pmask = unpack "L", pack "B32", (1 x $mask);
 if (($pip & $pmask) == ($pop & $pmask)) { $now = $addr{$net}; last; }
}

print "Content-type: text/html\n\n";

print qq~
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=cp1251">
<META HTTP-EQUIV="Pragma" CONTENT="No-Cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="No-Cache,Must-Revalidate,No-Store">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<title>Автоматическая настройка подключения</title>
<script>
function checkform()
{
if(settings.ip.value=="")
{
alert("Введите IP-адрес")
return false;
}

if(settings.mask.value=="")
{
alert("Введите маску подсети")
return false;
}

if(settings.gate.value=="")
{
alert("Введите основной шлюз")
return false;
}

if(settings.dns.value=="")
{
alert("Введите Предпочитаемый DNS-сервер")
return false;
}

return true;
}
</script>
</head>
<body bgcolor="#6696bc">
<center>
<h2>Создание файла автоматической настройки подключения к локальной сети</h2>
<h3>Внимание: файл настройки будет сохранять те значения, которые вы укажете сейчас.<br>Поэтому, пожалуйста, заполняйте поля внимательно.<br>Файл настройки работает для Windows NT/9x/XP/2000/2003.</h3>
<FORM name="settings" ACTION="$cgi_script" METHOD="POST" onsubmit="return checkform()">
<table border="0"  cellspacing="0" cellpadding="5"  leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<tr><td align=right>IP-адрес: <td><INPUT name="ip" type=text size=15 maxlength=15 value="$settings{$now}[0]"></td></tr>
<tr><td align=right>Маска подсети: <td><INPUT name="mask" type=text size=15 maxlength=15 value="$settings{$now}[1]"></td></tr>
<tr><td align=right>Основной шлюз: <td><INPUT name="gate" type=text size=15 maxlength=15 value="$settings{$now}[2]"></td></tr>
<tr><td align=right>Предпочитаемый DNS-сервер: <td><INPUT name="dns" type=text size=15 maxlength=15 value="$settings{$now}[3]"></td></tr>
<tr><td align=right><INPUT type=reset value="по умолчанию"> <td><input type=submit value='        скачать        '></td></tr>
</table>
</FORM>
<a href="$cgi_script">обновить</a></center></font><br></body></html>
~;

}
else
{

@pairs = split(/&/, $query);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ s/<([^>]|\n)*>//g;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<([^>]|\n)*>//g;
$p{$name} = $value;
}

$filename = "settings $p{ip}.vbs";

$file = qq~
Option Explicit
On Error Resume Next
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim strGateway
Dim strGatewayMetric
Dim strAddress
Dim strIPAddress
Dim strSubnetMask
Dim colNetAdapters
Dim errEnable
Dim errGateways
Dim objShell
Dim intValue
Dim Button
Dim arrNewDNSServerSearchOrder
Dim colNicConfigs
Dim objNicConfig
Dim strDNSServer
Dim intSetDNSServers
Dim strMask
Dim strGate
Dim strDns

strComputer = "."
strAddress = ("$p{ip}")
strMask = ("$p{mask}")
strGate = ("$p{gate}")
strDns = ("$p{dns}")

strIPAddress = Array(strAddress)
strSubnetMask = Array(strMask)
strGateway = Array(strGate)
strGatewayMetric = Array(1)
arrNewDNSServerSearchOrder = Array(strDns)

Button = MsgBox ("Сейчас вам будет предложено применить настройки к каждой сетевой карте из имеющихся в системе." & vbCRLF & _
"Нажмите ''Ok'' для той сетевой карты, которую нужно настроить." & vbCRLF & _
"Для остальных карточек нажимайте ''Нет''." & vbCRLF & _
"Нажмите ''Отмена'', если хотите выйти." & vbCRLF & _
"Перед тем, как нажать кнопку ''Ok'' убедитесь, что подключение к локальной сети включено и сетевой кабель вставлен в сетевую карту." & vbCRLF & _
"Без этих условий настройки не сохранятся." & vbCRLF & vbCRLF & _
"Применяемые настройки: " & vbCRLF & _
"IP: " & strAddress & vbCRLF & _
"Маска: " & strMask & vbCRLF & _
"Шлюз: " & strGate & vbCRLF & _
"DNS: " & strDns & vbCRLF, vbOKOnly + vbInformation, "Настройка подключения")

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\\\" & strComputer & "\\root\\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled = TRUE")

for Each objNetAdapter in colNetAdapters
Button = MsgBox ("Сетевая карта: " & vbCRLF & objNetAdapter.Caption & vbCRLF & vbCRLF & _
"Сохранять настройки для неё?" & vbCRLF & _
"Ок - сохранение настроек, Нет - нет, Отмена - выход", vbYesNoCancel + vbQuestion, "Сохранение настроек")
If Button = vbYes Then
 errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
 errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
 intSetDNSServers = objNetAdapter.SetDNSServerSearchOrder(arrNewDNSServerSearchOrder)
 If errEnable = 0 Then
  Button = MsgBox ("IP изменен на: " & strAddress & vbCRLF & _
  "Маска изменена на: " & strMask & vbCRLF & _
  "Шлюз изменен на: " & strGate & vbCRLF & _
  "DNS изменен на: " & strDns & vbCRLF & vbCRLF & "Для сетевой карты: " & vbCRLF & objNetAdapter.Caption, _
  vbOKOnly + vbInformation, "Сохранение настроек")
 Else
  Button = MsgBox ("Ошибка. Некорректные настройки, скачайте файл настройки заново." & vbCRLF & _
  "Файл настройки можно скачать по адресу:" & vbCRLF & _
  "$url", vbOKOnly + vbCritical, "Ошибка настройки")
 End If
End If
if Button = vbCancel Then
   WScript.Quit
End if
Next

WScript.Quit
~;

print "Content-type: application/vbs\r\nContent-disposition: attachment; filename=\"$filename\"\r\n\r\n";

@a = split /\n/, $file;
$, = "\r\n";
foreach $b (@a)
{
chomp $b;
chomp $b;
print "$b\r\n";
}

}

 

Который, будучи скормленным веб серверу, будет выдавать страничку.

На страничке можно написать ип, маску, шлюз, днс и нажать кнопку "скачать".

Кроме того, скрипт пытается по ИП адресу зашедшего на страничку определить и подставить его параметры.

У меня они описаны в начале скрипта.

Но так же можно указывать любые параметры.

В результате нажатия кнопки "скачать" на ваш компьютер сохранится vbs файл с этими настройками.

Файл будет примерно такой:

Option Explicit
On Error Resume Next
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim strGateway
Dim strGatewayMetric
Dim strAddress
Dim strIPAddress
Dim strSubnetMask
Dim colNetAdapters
Dim errEnable
Dim errGateways
Dim objShell
Dim intValue
Dim Button
Dim arrNewDNSServerSearchOrder
Dim colNicConfigs
Dim objNicConfig
Dim strDNSServer
Dim intSetDNSServers
Dim strMask
Dim strGate
Dim strDns

strComputer = "."
strAddress = ("192.168.0.5")
strMask = ("255.255.255.0")
strGate = ("192.168.0.129")
strDns = ("172.16.2.126")
strIPAddress = Array(strAddress)
strSubnetMask = Array(strMask)
strGateway = Array(strGate)
strGatewayMetric = Array(1)
arrNewDNSServerSearchOrder = Array(strDns)

Button = MsgBox ("Сейчас вам будет предложено применить настройки к каждой сетевой карте из имеющихся в системе." & vbCRLF & _
"Нажмите ''Ok'' для той сетевой карты, которую нужно настроить." & vbCRLF & _
"Для остальных карточек нажимайте ''Нет''." & vbCRLF & _
"Нажмите ''Отмена'', если хотите выйти." & vbCRLF & _
"Перед тем, как нажать кнопку ''Ok'' убедитесь, что подключение к локальной сети включено и сетевой кабель вставлен в сетевую карту." & vbCRLF & _
"Без этих условий настройки не сохранятся." & vbCRLF & vbCRLF & _
"Применяемые настройки: " & vbCRLF & _
"IP: " & strAddress & vbCRLF & _
"Маска: " & strMask & vbCRLF & _
"Шлюз: " & strGate & vbCRLF & _
"DNS: " & strDns & vbCRLF, vbOKOnly + vbInformation, "Настройка подключения")

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled = TRUE")

for Each objNetAdapter in colNetAdapters
Button = MsgBox ("Сетевая карта: " & vbCRLF & objNetAdapter.Caption & vbCRLF & vbCRLF & _
"Сохранять настройки для неё?" & vbCRLF & _
"Ок - сохранение настроек, Нет - нет, Отмена - выход", vbYesNoCancel + vbQuestion, "Сохранение настроек")
If Button = vbYes Then
 errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
 errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
 intSetDNSServers = objNetAdapter.SetDNSServerSearchOrder(arrNewDNSServerSearchOrder)
 If errEnable = 0 Then
  Button = MsgBox ("IP изменен на: " & strAddress & vbCRLF & _
  "Маска изменена на: " & strMask & vbCRLF & _
  "Шлюз изменен на: " & strGate & vbCRLF & _
  "DNS изменен на: " & strDns & vbCRLF & vbCRLF & "Для сетевой карты: " & vbCRLF & objNetAdapter.Caption, _
  vbOKOnly + vbInformation, "Сохранение настроек")
 Else
  Button = MsgBox ("Ошибка. Некорректные настройки, скачайте файл настройки заново." & vbCRLF & _
  "Файл настройки можно скачать по адресу:" & vbCRLF & _
  "http://elizovo.ru/cgi-bin/settings.cgi", vbOKOnly + vbCritical, "Ошибка настройки")
 End If
End If
if Button = vbCancel Then
   WScript.Quit
End if
Next

WScript.Quit

 

Файл выдает различные информационные сообщения.

И что самое главное, при переборе сетевых адаптеров каждый раз спрашивает, применять ли настройки.

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

У меня в сети используется один DNS сервер, поэтому и подставляется один.

Но для двух серверов файл переписать нетрудно.

 

2Флэшмобер:

Имена всех интерфейсов не нужны.

Нужны только те, у которых есть TCP/IP прооткол.

Как я понял из доков, это легко делается через WMI.

Вот пример кода, реализующего это:

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled = TRUE")

 

И потом перебирая адаптеры из colNetAdapters.... )

Опытным путем было установлено, что такой запрос показывает только включенные адаптеры.

 

И ещё просьба - если будете делать инсталлятор, оставьте место для программ типа inetaccess или wintray.

Получится первосортная программа типа "Установка интернета на компьютер".

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...