2015-01-26 2 views
-1

Я пытаюсь запустить ниже пакетный скрипт, используя PHP (он прекрасно работает из командной строки), чтобы изменить IP-адрес, используя аргумент, переданныйКак изменить IP-адрес с помощью сети скорлупу с аргументом, как IP

@echo off 
setlocal enabledelayedexpansion 
netsh int ip set address "EDU_LAN_Connection" static 172.31.%1.110 255.255.255.0 172.31.%1.1 1 

В PHP:

system("cmd /c C:\EDU_Project\change_ip.bat 6"); 

Я получаю следующее сообщение об ошибке при запуске PHP скрипт:

Invalid address parameter (172.31.61.1 1). It should be a valid IPv4 address. 

Я не знаю, как использовать delayedexpansion с аргументом. Пожалуйста помоги !

+2

Я думаю, вы должны смотреть на как IPV4 адрес форматируется –

+0

вы пытаетесь присвоить класс B-адрес, который все в порядке. Стандартный адрес класса B будет (172.x.y.z). В настоящее время вы выполняете 172.x.y.z A, где A. Недопустимо для конструкции IP, поэтому мой оригинальный комментарий –

+0

Эта ошибка такая же, как обсуждалось в этом вопросе: http://stackoverflow.com/questions/21824179/ip-configuration-from-batch-file, но я не уверен, как использовать аргументы с delayedexpansion – Chetan

ответ

1

Параметры партии адресуются только с %1. Не %1%

Изменить пакетный файл, соответственно:

netsh int ip set address "EDU_LAN_Connection" static 172.31.%1.110 255.255.255.0 172.31.%1.1 1 
+0

Спасибо, что я сделал это изменение, сценарий работает нормально в командной строке, но я все равно получаю эту ошибку при запуске от PHP: Неверный параметр адреса (172.31.6.110 255.255.255.0 172.31.6.1). Он должен быть действительным адресом IPv4. Запрос Ping не смог найти хост 172.31.6.1 -n 2. Пожалуйста, проверьте имя и повторите попытку. – Chetan

+0

Я отредактировал опечатку в своем ответе. Повторите попытку, пожалуйста. – Stephan

+0

Спасибо за помощь Стефан, да, я уже видел, что опечатка все равно не работает. Пока работает нормально в командной строке. – Chetan

0

Вместо того, чтобы идти на функции системы и передавая аргумент в пакетном файле. Я побежал NETSH команды непосредственно из PHP с помощью shell_exec:

$var= 18; 
shell_exec('netsh int ip set address name=\"EDU_LAN_Connection\" static 172.31.'.$var.'.110 255.255.255.0 172.31.'.$var.'.1 1');